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

3

能否在不删除和重新创建表以及丢失所有数据的情况下,在SQL Server表上设置主键和自动增量?


有任何想法吗?非常感谢您提供的任何指导。谢谢。 - PeteTheGreek
https://dev59.com/bGox5IYBdhLWcg3whUgV - Mihai
https://dev59.com/YW445IYBdhLWcg3wcJ2O - Mihai
2个回答

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)

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接