2011-09-03 31 views
13

मैं वर्तमान में अपने SQL सर्वर डेटाबेस में नई टेबल बना रहा हूं। मैं पुरानी टेबल का नाम बदल रहा हूं, साथ ही विदेशी कुंजी बाधाएं भी।विदेशी कुंजी नाम कैसे बदलें?

एडवेंचरवर्क डीबी का उदाहरण उदाहरण के रूप में SalesOrderDetail तालिका में FK_SalesOrderDetail_SalesOrderHeader_SalesOrderId (जो SalesOrderHeader तालिका से लिंक है) का उपयोग करने के लिए।

क्या इस विदेशी कुंजी का नाम बदल रहा है या क्या मुझे SalesOrderHeader तालिका में विदेशी कुंजी संदर्भ बदलने की भी आवश्यकता है?

उत्तर

16

बस नाम - यह किसी भी तरह से रिश्ते को नहीं बदलेगा।

EXEC sp_rename 'Sales.FK_SalesOrderDetail_SalesOrderHeader_SalesOrderId', 
       'new_name', 
       'OBJECT'; 

एनबी: AdventureWorks में विदेशी कुंजी Sales स्कीमा में है यही कारण है कि इतने object_name तर्क स्कीमा उपरोक्त प्रक्रिया कॉल में योग्य है।

1
SELECT Object_name(constraint_object_id), 
     Object_name(parent_object_id), 
     (SELECT name 
     FROM sys.columns 
     WHERE object_id = parent_object_id 
       AND column_id = parent_column_id), 
     Object_name(referenced_object_id), 
     (SELECT name 
     FROM sys.columns 
     WHERE object_id = referenced_object_id 
       AND column_id = referenced_column_id), 
     'sp_rename ''' + Object_name(constraint_object_id) + ''', ''con_fk_' + (SELECT Lower(name) 
                       FROM sys.columns 
                       WHERE object_id = parent_object_id 
                         AND column_id = parent_column_id) + ''',''OBJECT''' 
FROM sys.foreign_key_columns 
संबंधित मुद्दे