启用已包含数据的标识列?

时间:2013-07-19 16:48:47

标签: sql sql-server

有人禁用了SQL DB中表的标识列。即使表中已有数据,是否可以重新启用该列的功能?并维护现有的身份值?

我知道我可以将数据复制到另一个表,并在设置Identity_Insert后重新插入。

2 个答案:

答案 0 :(得分:6)

您无法在现有列上启用 IDENTITY,这在SQL Server中是不可能的(至少在2012版本之前)。

您需要做的就是您所描述的内容:

  • 在您想要的结构中创建新表,使用 IDENTITY
  • 使用SET IDENTITY_INSERT ON
  • 将现有表格中的数据复制到新表格中
  • 放下旧桌子
  • 将新表重命名为旧表名称

您可以在SQL Server Mgmt Studio中的可视化表设计器中“重新启用”身份规范,但这实际上只为您执行上述步骤中的步骤。

答案 1 :(得分:3)

正如* marc_s *表示你可以使用

我不知道是否有其他方法可以做到这一点,但你可以使用

    CREATE TABLE tblNewTable
    (
         //Put the columns and datatypes of the former table
    )

    INSERT INTO tblNewTable
    AS
    SELECT * FROM oldTable

然后放下表格

    DROP TABLE oldTable

然后重新创建新表并添加标识列,然后使用

   INSERT INTO tblNewRecreatedTable (//Columns of the new created table except the column with the identity
   AS
   SELECT //Columns of the table you copied the data to except the Columned that you  defined identity

我希望它有所帮助