是否可以在SQL Server表上设置主键和自动增量而不删除并重新创建表,并丢失所有数据?
答案 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)