SQL Server:设置主键而不删除表和内容

时间:2013-12-23 15:53:57

标签: sql sql-server

是否可以在SQL Server表上设置主键和自动增量而不删除并重新创建表,并丢失所有数据?

2 个答案:

答案 0 :(得分:6)

当然可以!您只需添加一个新列,它就是INT IDENTITY并为其添加主键约束:

 ALTER TABLE dbo.YourTable
 ADD ID INT IDENTITY(1,1) NOT NULL

 ALTER TABLE dbo.YourTable
 ADD CONSTRAINT PK_YourTable PRIMARY KEY (ID)

答案 1 :(得分:3)

如果存在现有主键,则必须先删除它:

IF EXISTS (SELECT * FROM sys.key_constraints
           WHERE type = 'PK' AND parent_object_id = OBJECT_ID('MyTable')
           AND Name = 'PK_MyTable')
    ALTER TABLE MyTable DROP CONSTRAINT PK_MyTable

如果要添加要用作主键的列,则只需添加它即可:

ALTER TABLE MyTable ADD MyKey INT IDENTITY

然后,您可以将此列设置为表的主键:

ALTER TABLE MyTable ADD CONSTRAINT PK_MyTable PRIMARY KEY(MyKey)