将现有的列转换为标识

我在SQL Server中有一个记录包的表。 我想将主键的ID列转换为标识列而不丢失数据。 我想到了以下两种方法:

  • 用标识创建一个新表并删除现有表。
  • 用标识创建一个新列并删除现有列。
  • 但很明显,他们不能实施,因为保持记录是我的首要任务。

    有没有另一种方法来做到这一点?


    在使用SQL Server 2012时,另一个可能的替代方案可能是创建一个序列对象,该对象具有表中最高ID +1的起始值,然后使用GET NEXT VALUE FOR为列创建默认约束并引用您的您刚创建的序列对象。


    这个解决方案违反了你的观点2,但没有其他办法,我认为你的目标是保持旧的价值观,因为没有别的东西是有意义的......

    您可以执行以下操作:

  • 可以在表中插入标识列:

    set identity_insert YourTable ON
    
  • 将新的ID列添加到具有标识的表中,然后插入旧列中的值
  • 将身份插入关闭

    set identity_insert YourTable OFF
    
  • 删除旧的ID列
  • 将新列重命名为旧名称
  • 使其成为主键
  • 唯一的问题可能是您的ID列已经作为外键连接到其他表。 然后在删除旧列时出现问题......在这种情况下,您必须在第3步后删除ID列上的外键约束,然后执行第4步到第6步,然后重新创建外键约束。


    如果您可以直接访问服务器数据库,只需进入表的设计,选择PK列,并将标识更改为“是”。 确保您将种子设置为该列的最大值。 默认情况下增量为1。 保存桌子的设计,你应该很好去。 在这里输入图像描述

    链接地址: http://www.djcxy.com/p/16933.html

    上一篇: Convert an existing Column to Identity

    下一篇: Guice TypeListener not notified about the injected class Type