将现有的列转换为标识
我在SQL Server中有一个记录包的表。 我想将主键的ID列转换为标识列而不丢失数据。 我想到了以下两种方法:
但很明显,他们不能实施,因为保持记录是我的首要任务。
有没有另一种方法来做到这一点?
在使用SQL Server 2012时,另一个可能的替代方案可能是创建一个序列对象,该对象具有表中最高ID +1的起始值,然后使用GET NEXT VALUE FOR为列创建默认约束并引用您的您刚创建的序列对象。
这个解决方案违反了你的观点2,但没有其他办法,我认为你的目标是保持旧的价值观,因为没有别的东西是有意义的......
您可以执行以下操作:
可以在表中插入标识列:
set identity_insert YourTable ON
将身份插入关闭
set identity_insert YourTable OFF
唯一的问题可能是您的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