आप sp_rename
. का उपयोग कर सकते हैं SQL सर्वर में एक विदेशी कुंजी बाधा का नाम बदलने के लिए सिस्टम संग्रहीत प्रक्रिया।
इस संग्रहीत कार्यविधि का उद्देश्य आपको वर्तमान डेटाबेस में उपयोगकर्ता द्वारा बनाए गए ऑब्जेक्ट का नाम बदलने की अनुमति देना है, ताकि आप अन्य ऑब्जेक्ट जैसे टेबल, कॉलम, उपनाम डेटा प्रकार आदि का भी नाम बदल सकें।
सिंटैक्स
sp_rename
. का सिंटैक्स इस तरह जाता है:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ]
तो आपका कोड कुछ इस तरह हो सकता है:
sp_rename 'schema_name.old_fk_name', 'new_fk_name';
ध्यान दें कि Microsoft दस्तावेज़ीकरण में कहा गया है कि बाधाओं (जैसे विदेशी कुंजी) का नाम बदलने पर आपको मौजूदा नाम को स्कीमा नाम के साथ योग्य बनाना होगा।
यदि आप स्कीमा को छोड़ देते हैं तो आपको त्रुटि मिल सकती है या नहीं भी हो सकती है, लेकिन इस पर Microsoft की सलाह का पालन करना शायद एक अच्छा विचार है।
निम्नलिखित उदाहरण मुझे एक विदेशी कुंजी का नाम बदलते हुए दिखाता है।
उदाहरण 1 - सभी विदेशी कुंजियों की समीक्षा करें
सबसे पहले, मैं डेटाबेस में विदेशी कुंजियों पर एक नज़र डालूंगा (ताकि मैं तय कर सकूं कि किसका नाम बदलना है)।
SELECT name AS 'Foreign Key', SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table' FROM sys.foreign_keys;
परिणाम:
+--------------------------------+----------+---------+--------------------+ | Foreign Key | Schema | Table | Referenced Table | |--------------------------------+----------+---------+--------------------| | FK_Albums_Artists | dbo | Albums | Artists | | FK_Albums_Genres | dbo | Albums | Genres | | FK__Artists__Country__4AB81AF0 | dbo | Artists | Country | +--------------------------------+----------+---------+--------------------+
तीसरी विदेशी कुंजी ( FK__Artists__Country__4AB81AF0 ) प्रणाली द्वारा नामित किया गया है। सिस्टम ने इसका नाम इसलिए रखा क्योंकि जब मैंने इसे बनाया था तो मैं एक नाम देना भूल गया था।
आइए इस विदेशी कुंजी को अधिक संक्षिप्त नाम दें।
उदाहरण 2 - विदेशी कुंजी का नाम बदलें
यहाँ वह बिट है जो विदेशी कुंजी का नाम बदल देता है।
sp_rename 'dbo.FK__Artists__Country__4AB81AF0', 'FK_Artists_Country';
जैसा कि उल्लेख किया गया है, पुराना (मौजूदा) नाम पहले आता है, फिर नया नाम।
तो अब अगर मैं सभी विदेशी कुंजियों का चयन करता हूं, तो मुझे निम्न परिणाम मिलते हैं।
SELECT name AS 'Foreign Key', SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table' FROM sys.foreign_keys;
परिणाम:
+--------------------+----------+---------+--------------------+ | Foreign Key | Schema | Table | Referenced Table | |--------------------+----------+---------+--------------------| | FK_Albums_Artists | dbo | Albums | Artists | | FK_Albums_Genres | dbo | Albums | Genres | | FK_Artists_Country | dbo | Artists | Country | +--------------------+----------+---------+--------------------+
मैंने सफलतापूर्वक विदेशी कुंजी का नाम बदल दिया है।