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.通过添加列来替换标识列

替换法 
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

SqlServer关闭与启用标识(自增长)列的更多相关文章

  1. SQL关闭自增长列标识:SET IDENTITY_INSERT

    关闭自增长列添加记录,然后再恢复自增长功能 SET IDENTITY_INSERT 表名 ON; inert ,); SET IDENTITY_INSERT 表名 OFF

  2. 使用sql语句创建修改SQL Server标识列(即自动增长列)

    一.标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列.该种列具有以下三种特点:1.列的数据类型为不带小数的数值类型2.在进行插入(Insert)操作时,该列的值是由系统 ...

  3. 重置sqlserver自增长列的种子

    重置sqlserver自增长列的种子 转自:http://hi.baidu.com/zbphot/item/41c55982c2d02dd05e0ec184 如果表中的数据不要了,用下面的语句:  t ...

  4. MySQL标识列(自增长列)

    #标识列/*又称为自增长列含义:可以不用手动的插入值,系统提供默认的序列值 特点:1.标识列必须和主键搭配吗?不一定,但要求是一个key2.一个表可以有几个标识列?至多一个!3.标识列的类型只能是数值 ...

  5. Mysql,SqlServer,Oracle主键自动增长的设置

    在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: CREATE TABLE google(id INT AUTO_INCREMENT PRIMARY ...

  6. SQL Server 2012 自动增长列,值跳跃问题

    介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(in ...

  7. SQL获取刚插入的记录的自动增长列ID的值

    假设表结构如下: CREATE TABLE TestTable ( id int identity, CreatedDate datetime ) SQL2005获得新增行的自动增长列的语句如下: i ...

  8. SELECT IDENT_CURRENT(tableName)和自增长列的纠结

    项目中要用到一个功能:主表主键为自增长,要求在插入主表数据前先获得主表要插入数据的主键ID值,用在插入子表时获取主键ID.在网上搜了一下,发现SELECT IDENT_CURRENT(TableNam ...

  9. Codesmith怎么判断sqlserver数据库字段是不是标识自增字段

    Codesmith怎么判断sqlserver数据库字段是不是标识自增字段 使用ExtendedProperty扩展信息判断 CS_isIdentity:是否为标识符,不支持Access CS_isCo ...

随机推荐

  1. block 实现原理(内存管理详解)(二)

    在以前,MRC环境下,使用block很可能会出现内存泄漏问题,并且在以往的面试中,一些接触比较久的程序员都会喜欢问到这个问题,block内存泄漏的问题! 下面,我来介绍一下,MRC下Block内存泄漏 ...

  2. jquery之 css()方法。用法类似的有attr(),prop(),val()

    [注]attr(),prop(),val()的用法结构和css()一致,可参考 css()函数用于设置或返回当前jQuery对象所匹配的元素的css样式属性值. 该函数属于jQuery对象(实例).如 ...

  3. ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql'

    mysql> use mysqlERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql' ...

  4. Django中的分页

    直接看代码吧,还算比较简单: 先确认数据量有多少 根据页面显示数据的多少来分割数据,得到页面的开始数据和结束数据 根据开始和截止数据去切片数据,并且得到总共的页码数 根据一页显示多少页码和当前页码数, ...

  5. Mybatis的二级缓存配置

    一个项目中肯定会存在很多共用的查询数据,对于这一部分的数据,没必要每一个用户访问时都去查询数据库,因此配置二级缓存将是非常必要的.  Mybatis的二级缓存配置相当容易,要开启二级缓存,只需要在你的 ...

  6. kakfa的常用命令总结

    Kafka的版本间差异较大,下面是0.8.2.1的操作方法 首先cd到kafaka的bin目录下;   #step1启动zookeeper服务 nohup bin/zookeeper-server-s ...

  7. Quartz.Net 调度框架配置介绍

    在平时的工作中,估计大多数都做过轮询调度的任务,比如定时轮询数据库同步,定时邮件通知等等.大家通过windows计划任务,windows服务等都实现过此类任务,甚至实现过自己的配置定制化的框架.那今天 ...

  8. 详解公用表表达式(CTE)

    简介 对于SELECT查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解的.但是,视图是作为系统对象存在数据库中,那对于结果集 ...

  9. 解耦HTML、CSS和JavaScript

    当前在互联网上,任何一个稍微复杂的网站或者应用程序都会包含许多HTML.CSS和JavaScript.随着互联网运用的发展以及我们对它的依赖性日益增加,设定一个关于组织和维护你的前端代码的计划是绝对需 ...

  10. 保留ip: Reserved IP addresses

    Reserved IP addresses From Wikipedia, the free encyclopedia     In the Internet addressing architect ...