【问题标题】:SQL Server : set primary key without dropping table and content [duplicate]SQL Server:设置主键而不删除表和内容[重复]
【发布时间】:2014-01-11 20:51:10
【问题描述】:

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

【问题讨论】:

标签: sql sql-server


【解决方案1】:

当然可以!您只需添加一个新列,它是一个 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)

【讨论】:

    【解决方案2】:

    如果已有主键,则必须先删除它:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-07
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多