Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर (T-SQL) में प्राथमिक कुंजी का नाम बदलें

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';

यह बिल्कुल वही काम करता है (निर्दिष्ट प्राथमिक कुंजी का नाम बदलता है)।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SELECT INTO . में ORDER BY संरक्षित करना

  2. कीवर्ड समर्थित नहीं:मेटाडेटा

  3. 3 क्षेत्र जो SQL सर्वर प्रदर्शन निगरानी उपकरण का उपयोग करने से लाभान्वित होंगे

  4. SQL सर्वर (T-SQL उदाहरण) में एक संग्रहीत कार्यविधि या उपयोगकर्ता-परिभाषित फ़ंक्शन के पैरामीटर लौटाएँ

  5. SQL सर्वर DATEPART () बनाम DATENAME () - क्या अंतर है?