SQL सर्वर में, आप sp_rename
. का उपयोग कर सकते हैं प्राथमिक कुंजी सहित, वर्तमान डेटाबेस में उपयोगकर्ता द्वारा बनाई गई वस्तु का नाम बदलने के लिए संग्रहीत कार्यविधि।
यह आसान हो सकता है यदि आपके पास प्राथमिक कुंजी है जिसका नाम स्वचालित रूप से असाइन किया गया है, और अब आप इसे अधिक पठनीय नाम देना चाहते हैं।
जब आप स्पष्ट रूप से इसके लिए एक नाम प्रदान किए बिना प्राथमिक कुंजी बनाते हैं, तो SQL सर्वर स्वचालित रूप से इसके लिए एक नाम देता है। ऐसे नामों में आमतौर पर एक लंबा संख्यात्मक प्रत्यय शामिल होता है, जिससे याद रखना कठिन हो जाता है। यदि आपको उस प्राथमिक कुंजी (जैसे आपके कोड, दस्तावेज़ीकरण, आदि) को संदर्भित करने की आवश्यकता है, तो ऐसे नाम आपके जीवन को और अधिक कठिन बना सकते हैं। सौभाग्य से, sp_rename
इस नाम को बदलने का एक त्वरित और आसान तरीका प्रदान करता है।
सिंटैक्स
sp_rename
. के लिए सिंटैक्स इस तरह जाता है:
sp_rename
[ @objname = ] 'object_name' ,
[ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
प्राथमिक कुंजी (और अन्य बाधाओं) के लिए, ऑब्जेक्ट प्रकार OBJECT
. है ।
उदाहरण
सबसे पहले, उस प्राथमिक कुंजी का नाम लेते हैं जिसे हम बदलना चाहते हैं:
SELECT
SCHEMA_NAME(schema_id) AS SchemaName,
name AS PrimaryKey
FROM sys.objects
WHERE parent_object_id = (OBJECT_ID('dbo.t1'))
AND type = 'PK';
परिणाम:
+--------------+--------------------------+ | SchemaName | PrimaryKey | |--------------+--------------------------| | dbo | PK__t1__3213663B10938530 | +--------------+--------------------------+
यह t1
. नामक तालिका के लिए प्राथमिक कुंजी है , तो हम आगे बढ़ेंगे और उस प्राथमिक कुंजी का नाम बदल देंगे।
जब आप प्राथमिक कुंजी का नाम बदलते हैं, तो आपको वर्तमान नाम के साथ स्कीमा शामिल करना होगा।
उदाहरण:
EXEC sp_rename 'dbo.PK__t1__3213663B10938530', 'PK_t1';
जब आप SQL सर्वर में प्राथमिक कुंजी (या कोई अन्य ऑब्जेक्ट) का नाम बदलते हैं, तो आपको शायद निम्न संदेश दिखाई देगा:
Caution: Changing any part of an object name could break scripts and stored procedures.
यह मूल रूप से हमें इस बात की जानकारी दे रहा है कि कोई भी स्क्रिप्ट और/या संग्रहीत कार्यविधियाँ जो वस्तु को संदर्भित करती हैं, अब टूट सकती हैं, और नए नाम को दर्शाने के लिए तदनुसार अद्यतन किया जाना चाहिए।
भले ही, अब प्राथमिक कुंजी का नाम बदल दिया गया है।
हम पिछली क्वेरी को फिर से चलाकर इसे सत्यापित कर सकते हैं:
SELECT
SCHEMA_NAME(schema_id) AS SchemaName,
name AS PrimaryKey
FROM sys.objects
WHERE parent_object_id = (OBJECT_ID('dbo.t1'))
AND type = 'PK';
परिणाम:
+--------------+--------------+ | SchemaName | PrimaryKey | |--------------+--------------| | dbo | PK_t1 | +--------------+--------------+
ऑब्जेक्ट प्रकार सहित
आप ऑब्जेक्ट प्रकार को तीसरे तर्क के रूप में भी शामिल कर सकते हैं। प्राथमिक कुंजियों और अन्य बाधाओं के लिए, OBJECT
का उपयोग करें :
EXEC sp_rename 'dbo.PK__t1__3213663B10938530', 'PK_t1', 'OBJECT';
पैरामीटर नामों सहित
किसी भी संग्रहीत कार्यविधि की तरह, sp_rename
. को कॉल करते समय आप पैरामीटर नाम भी शामिल कर सकते हैं :
EXEC sp_rename
@objname = 'dbo.PK__t1__3213663B10938530',
@newname = 'PK_t1',
@objtype = 'OBJECT';
यह बिल्कुल वही काम करता है (निर्दिष्ट प्राथमिक कुंजी का नाम बदलता है)।