Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thêm cột khóa chính trong bảng SQL

Trong SQL Server 2005 hoặc mới hơn, bạn có thể sử dụng tập lệnh này:

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

Tất nhiên, tập lệnh này vẫn có thể không thành công, nếu các bảng khác đang tham chiếu đến dbo.YourTable này sử dụng các ràng buộc khóa ngoại đối với RowId đã có từ trước cột ...

Cập nhật: tất nhiên , ở bất cứ đâu tôi sử dụng dbo.YourTable hoặc PK_YourTable , bạn phải thay thế các trình giữ chỗ đó bằng thực tế bảng / tên ràng buộc từ cơ sở dữ liệu của riêng bạn (bạn không đề cập đến chúng là gì, trong câu hỏi của bạn .....)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sp_reset_connection làm gì?

  2. Làm cách nào để đặt chuỗi kết nối SQL Server?

  3. Thêm màu hàng xen kẽ vào báo cáo Dịch vụ báo cáo máy chủ SQL

  4. Cách chèn chuỗi chứa dấu ngoặc kép hoặc đơn

  5. SQL:Sắp xếp theo chuỗi con của các chữ cái và số hỗn hợp