Bil*_*llz 7 sql t-sql sql-server sql-server-2012
我在SQL Server中有一个包含记录包的表.我想将主键ID列转换为标识列,而不会丢失数据.我想到了以下两种方法:
但很明显,他们无法实施,因为保留记录是我的首要任务.
还有另一种方法吗?
这个解决方案违反了你的第2点,但没有其他办法,我认为你的目标是保留旧价值观,因为没有其他办法有意义......
您可以执行以下操作:
可以插入表中的标识列:
set identity_insert YourTable ON
Run Code Online (Sandbox Code Playgroud)关闭身份插入
set identity_insert YourTable OFF
Run Code Online (Sandbox Code Playgroud)唯一的问题可能是您的 ID 列已作为外键连接到其他表。那么删除旧列时会遇到问题...在这种情况下,您必须在步骤 3 之后删除 ID 列上的外键约束,然后执行步骤 4 到 6,然后重新创建外键约束。
当您使用 SQL Server 2012 时,另一种可能的替代方法是创建一个序列对象,该对象的起始值为表中已有的最高 ID +1,然后使用 GET NEXT VALUE FOR 为您的列创建默认约束并引用您的您刚刚创建的序列对象。