注册/登录,欢迎光临!
加入收藏设为首页网站地图
您当前的位置:辛勤IT网 >> 数据库 >> sqlserver >> SqlServer关闭与启用标识列(自增列)
热门:word | excel | powerpoint

SqlServer关闭与启用标识列(自增列)

2020/7/3 21:29:56 所属分类:数据库 - sqlserver
内容提要:SqlServer关闭与启用标识列(自增列),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 ),临时性 ,不彻底该表列性质。

  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种较好的方案。

  一.通过添加列来替换标识列

  替换法

  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

  二.显示值插入(修改会话中的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 修改列的属性. 其中选择看场景吧。

数据库 | sqlserver
相关文章
最近更新
推荐信息
关于我们 | 联系方式 | 对话本站 | 版权声明 | 所有信息