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

T-SQL का उपयोग करके SQL सर्वर में एक CHECK बाधा का नाम बदलें

आप sp_rename . का उपयोग कर सकते हैं एक CHECK का नाम बदलने के लिए सिस्टम संग्रहीत कार्यविधि SQL सर्वर में बाधा।

इस संग्रहीत कार्यविधि का उद्देश्य आपको वर्तमान डेटाबेस में उपयोगकर्ता द्वारा बनाए गए ऑब्जेक्ट का नाम बदलने की अनुमति देना है। तो आप इसका उपयोग अन्य ऑब्जेक्ट्स जैसे टेबल, कॉलम, उपनाम डेटा प्रकार इत्यादि का नाम बदलने के लिए भी कर सकते हैं।

सिंटैक्स

sp_rename . का सिंटैक्स इस तरह जाता है:

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    [ , [ @objtype = ] 'object_type' ]

तो आपका कोड कुछ इस तरह हो सकता है:

sp_rename 'schema_name.old_constraint_name', 'new_constraint_name';

ध्यान दें कि Microsoft दस्तावेज़ कहता है कि बाधाओं का नाम बदलने पर आपको मौजूदा नाम को स्कीमा नाम के साथ योग्य बनाना होगा।

निम्न उदाहरण दर्शाता है कि CHECK का नाम कैसे बदला जाए बाधा।

उदाहरण 1 - नाम बदलने के लिए एक बाधा चुनें

सबसे पहले, आइए CHECK की सूची बनाएं डेटाबेस में बाधाएं हैं, इसलिए हम तय कर सकते हैं कि किसका नाम बदलना है।

SELECT 
  name,
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  definition
FROM sys.check_constraints;

परिणाम:

+-----------------+----------+----------------+----------------------------------------+
| name            | Schema   | Table          | definition                             |
|-----------------+----------+----------------+----------------------------------------|
| chkPrice        | dbo      | ConstraintTest | ([Price]>(0))                          |
| chkValidEndDate | dbo      | ConstraintTest | ([EndDate]>=[StartDate])               |
| chkTeamSize     | dbo      | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) |
| chkJobTitle     | dbo      | Occupation     | ([JobTitle]<>'Digital Nomad')          |
+-----------------+----------+----------------+----------------------------------------+

आइए दूसरी बाधा का नाम बदलें ( chkValidEndDate )।

आइए मान्य को हटा दें भाग ताकि यह केवल chkEndDate . बन जाए ।

उदाहरण 2 - प्रतिबंध का नाम बदलें

बाधा का नाम बदलने के लिए इसे चलाएँ।

sp_rename 'dbo.chkValidEndDate', 'chkEndDate';

तो पुराना (मौजूदा) नाम पहले आता है, उसके बाद नया नाम आता है।

तो अब अगर मैं सभी CHECK . का चयन करता हूं बाधाएँ फिर से, मुझे निम्नलिखित परिणाम मिलते हैं।

SELECT 
  name,
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  definition
FROM sys.check_constraints;

परिणाम:

+-------------+----------+----------------+----------------------------------------+
| name        | Schema   | Table          | definition                             |
|-------------+----------+----------------+----------------------------------------|
| chkPrice    | dbo      | ConstraintTest | ([Price]>(0))                          |
| chkEndDate  | dbo      | ConstraintTest | ([EndDate]>=[StartDate])               |
| chkTeamSize | dbo      | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) |
| chkJobTitle | dbo      | Occupation     | ([JobTitle]<>'Digital Nomad')          |
+-------------+----------+----------------+----------------------------------------+

बाधा का नाम बदल दिया गया है।

जैसा कि बताया गया है, sp_rename संग्रहीत कार्यविधि केवल CHECK तक सीमित नहीं है प्रतिबंध। आप एक विदेशी कुंजी बाधा, एक टेबल, कॉलम, उपनाम डेटा प्रकार, या किसी अन्य उपयोगकर्ता-परिभाषित ऑब्जेक्ट का नाम बदलने के लिए बिल्कुल उसी सिंटैक्स का उपयोग कर सकते हैं।

हालाँकि, Microsoft अनुशंसा करता है कि संग्रहीत कार्यविधियाँ, ट्रिगर, उपयोगकर्ता-परिभाषित फ़ंक्शन या दृश्य का नाम न बदलें। ऐसे मामलों में, Microsoft अनुशंसा करता है कि आप इसके बजाय वस्तु को छोड़ दें और इसे नए नाम के साथ फिर से बनाएँ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल केस स्टेटमेंट

  2. कैसे जांचें कि इसे बनाने से पहले कोई संग्रहीत कार्यविधि मौजूद है या नहीं?

  3. SQL सर्वर (T-SQL) में समर्थित समय क्षेत्रों की सूची प्राप्त करें

  4. SQL सर्वर में किसी संख्या को 2 दशमलव स्थानों पर प्रारूपित करने के लिए 4 कार्य

  5. लॉग के बिना SQL में तालिका के बड़े डेटा को कैसे हटाएं?