Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tambahkan kolom kunci utama dalam tabel SQL

Di SQL Server 2005 atau yang lebih baru, Anda dapat menggunakan skrip ini:

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

Tentu saja, skrip ini mungkin masih gagal, jika tabel lain merujuk ke dbo.YourTable ini menggunakan batasan kunci asing ke RowId yang sudah ada sebelumnya kolom...

Pembaruan: dan tentu saja , di mana saja saya menggunakan dbo.YourTable atau PK_YourTable , Anda harus mengganti placeholder tersebut dengan aktual nama tabel / batasan dari database Anda sendiri (Anda tidak menyebutkan apa itu, dalam pertanyaan Anda .....)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memanggil fungsi yang Ditentukan SQL di C #

  2. Bagaimana saya bisa mengubah dari mode SQL Server Windows ke mode campuran (SQL Server 2008)?

  3. Mengapa penyetelan kinerja SQL adalah keterampilan manajemen basis data yang paling penting untuk dimiliki

  4. Apa cara terbaik untuk menyimpan koordinat (bujur/lintang, dari Google Maps) di SQL Server?

  5. Temukan baris dengan parameter di salah satu dari dua kolom?