一般来说大概有2种较好的方案. 1.通过添加列来替换 标识 列 替换法 1 --添加新列 2 alter table tablename add id int 3 --赋值 4 update tablename set id = identity_id 5 --删除 标识 列 6 alter table tablename drop column identity_id 2.显示值插入(
一般来说大概有2种较好的方案.
1.通过添加列来替换标识列
替换法
1 --添加新列
2 alter table tablename add id int
3 --赋值
4 update tablename set id = identity_id
5 --删除标识列
6 alter table tablename drop column identity_id
2.显示值插入(修改会话中的identity_insert ),临时性 ,不彻底该表列性质
set identity_insert [ database_name . [ schema_name ] . ] table { on | off }
显式值插入
1 --一般是组合使用,已确保会话中identity_insert的完整状态
2 set identity_insert tablename on --关闭
3 insert into tablename(identyty_id,...) values(...)
4 insert into tablename(identyty_id,...) values(...)
5 insert into tablename(identyty_id,...) values(...)
6 set identity_insert test off --开启
关于这种方式,需要注意如下:
a.任何时候,一个会话中只有一个表的 identity_insert 属性可以设置为 on ,想修改其他表,必须将前一个on状态改回off
b.如果插入值大于表的当前标识值,则 sql server 自动将新插入值作为当前标识值使用
c.set identity_insert 的设置是在执行或运行时设置的
当然还有其他的方案,比如通过系统存储过程sp_configure 修改列的属性. 其中选择看场景吧
内容来源:http://www.5aspx.com/sql/2012/5252.html