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

SQL तालिका में प्राथमिक कुंजी कॉलम जोड़ें

SQL सर्वर 2005 या नए में, आप इस स्क्रिप्ट का उपयोग कर सकते हैं:

-- drop PK constraint if it exists
IF EXISTS (SELECT * FROM sys.key_constraints WHERE type = 'PK' AND parent_object_id = OBJECT_ID('dbo.YourTable') AND Name = 'PK_YourTable')
   ALTER TABLE dbo.YourTable
   DROP CONSTRAINT PK_YourTable
GO

-- drop column if it already exists
IF EXISTS (SELECT * FROM sys.columns WHERE Name = 'RowId' AND object_id = OBJECT_ID('dbo.YourTable'))
    ALTER TABLE dbo.YourTable DROP COLUMN RowId
GO

-- add new "RowId" column, make it IDENTITY (= auto-incrementing)
ALTER TABLE dbo.YourTable 
ADD RowId INT IDENTITY(1,1)
GO

-- add new primary key constraint on new column   
ALTER TABLE dbo.YourTable 
ADD CONSTRAINT PK_YourTable
PRIMARY KEY CLUSTERED (RowId)
GO

बेशक, यह स्क्रिप्ट अभी भी विफल हो सकती है, अगर अन्य टेबल इस dbo.YourTable को संदर्भित कर रहे हैं पहले से मौजूद RowId . पर विदेशी कुंजी बाधाओं का उपयोग करना कॉलम...

अपडेट करें: और बेशक , मैं कहीं भी dbo.YourTable . का उपयोग करता हूं या PK_YourTable , आपको उन प्लेसहोल्डर को वास्तविक . से बदलना होगा अपने स्वयं के डेटाबेस से तालिका/बाधा नाम (आपने अपने प्रश्न में उल्लेख नहीं किया कि वे क्या थे .....)



  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. स्ट्रिंग को हेक्स में कैसे बदलें और इसके विपरीत?

  4. SQL सर्वर 2008 दिनांक कॉलम मानों के साथ धाराप्रवाह NHibernate समस्याएं

  5. SQLCLR और डेटटाइम2