将现有主列更改为SQL Server中的自动增量

时间:2014-03-21 05:26:22

标签: sql sql-server

我有一个表,它已经有一个主键,数据类型为integer。问题是插入行后列未设置为自动递增。我必须检查最大值然后加1以手动自动增加到列。有没有办法改变列以将主键设置为自动递增?我要添加数百条记录并手动添加id是一项相当繁琐的任务。我不能删除列,因为存在已存在的ID。提前谢谢。

2 个答案:

答案 0 :(得分:1)

您无法将现有列的定义更改为标识。在保留任何现有ID的同时,最接近的是<; p>

  1. 使用相同的定义创建一个新表,但标识为
  2. 配置新表以允许插入特定值(使用Set Identity_Insert On
  3. 从现有表格中选择数据到新表格
  4. 关闭Identity_Insert
  5. 删除或重命名现有表格
  6. 将新表重命名为原始表的名称。
  7. 像这样的东西

    Create Table Table1 (id int, Name varchar(20))
    Insert Into Table1 values (1,'Name 1')
    Insert Into Table1 values (2,'Name 2') 
    
    
    Create Table Table2 (Id int identity, Name varchar(20))
    Go
    
    Set Identity_Insert Table2 on
    Go
    Insert into Table2 (Id, Name) Select Id,Name from Table1
    Set Identity_Insert Table2 Off
    Go 
    Exec sp_Rename Table1, TableOld, 'Object'
    Exec sp_Rename Table2, Table1, 'Object'
    Insert into Table1 (Name) values ('Name 3')
    

答案 1 :(得分:-4)

使用此:

更改表人员(ID int IDENTITY(1,1)PRIMARY KEY)