声明:本博文摘自http://www.lmwlove.com/ac/ID500

自增列默认是不能插入显式值的,当我们试图给自增列插入值时,会报以下错误:
当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'table1' 中的标识列插入显式值。
如果我们想为表的自增列插入显式值,我们可以通过SET IDENTITY_INSERT语法来实现,这在数据转移的时候尤为有效。
我们先看看IDENTITY_INSERT的语法。

作用:允许将显式值插入表的标识列中。
语法:SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }
参数:
database_name 
指定的表所在的数据库的名称。
schema_name 
表所属的架构的名称。
table 
包含标识列的表的名称。
备注:
任何时候,一个会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,则对另一个表发出 SET IDENTITY_INSERT ON 语句时,SQL Server 2005 将返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON,并报告已将其属性设置为 ON 的表。
如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。
SET IDENTITY_INSERT 的设置是在执行或运行时设置的,而不是在分析时设置的。
示例:
我们先创建一个带有自增列的表:
 create table hr_member(ID int identity(,) primary key,name varchar())

然后我们尝试往该表插入数据:

 insert into hr_member(id,name) values (1,'wfs')

会报以下的错误:
当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'hr_member' 中的标识列插入显式值。
设置identity_insert的值后再插入数据:

 set identity_insert hr_member on
insert into hr_member(id,name) values (1,'wfs')

执行成功!
注意:在同一个会话中,只能有一个表的identity_insert可以设置为ON。
我们再创建另一个表:

 create table hr_member_1(ID int identity(1,1) primary key,name varchar(100))

然后执行:

 set identity_insert hr_member on
set identity_insert hr_member_1 on

会报以下的错误:
表 'test.dbo.hr_member' 的 IDENTITY_INSERT 已经为 ON。无法为表 'hr_member_1' 执行 SET 操作。
修改代码:

 set identity_insert hr_member off
set identity_insert hr_member_1 on

执行成功!
注意:我们在在对标识列执行插入操作时,一定要列出此标识列的列名:
如下代码:

 set identity_insert hr_member on
insert into hr_member
select 2,'abc'

会报以下错误:
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'hr_member'中的标识列指定显式值。
修改代码:

 set identity_insert hr_member on
insert into hr_member(ID,name)
select 2,'abc'

执行成功!

注意:任何set identity_insert 表名 on的设置,都只在当前会话中有效!

SET IDENTITY_INSERT详解的更多相关文章

  1. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  2. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  3. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  4. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  5. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  6. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  7. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  8. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  9. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

随机推荐

  1. 《python源代码分析》笔记 pythonVM一般表达式

    本文senlie原版的.转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.字节码指令 LOAD_CONST:从consts表中读取序号为i的元素并压入到执行时栈中 ...

  2. 第18章 备忘录模式(Memento Pattern)

    原文  第18章 备忘录模式(Memento Pattern) 备忘录模式       概述: 备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Toke ...

  3. 使用Blend的一些问题

    原文:使用Blend的一些问题 WPF开发,界面处理首选Blend,如果你开发了两年WPF都没接触过blend(当然这种几率不高),或者你刚接触WPF,可以考虑使用Blend,这货也算得上一个神器,上 ...

  4. CSharp设计模式读书笔记(22):策略模式(学习难度:★☆☆☆☆,使用频率:★★★★☆)

    策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy). 模式角色与结构: ...

  5. poj3070--Fibonacci(矩阵的高速幂)

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9650   Accepted: 6856 Descrip ...

  6. SSAS系列——【02】多维数据(维度对象)

    原文:SSAS系列——[02]多维数据(维度对象) 1.维度是什么? 数学中叫参数,物理学中是独立的时空坐标的数目.0维是一点,1维是线,2维是一个长和宽(或曲线)面积,3维是2维加上高度形成体积面. ...

  7. MVC4新功能...压缩和合并js文件和样式文件

    1.在App_Start文件夹中BundleConfig.cs类中添加相应的文件 1.1bundles.Add(new ScriptBundle("~/bundles/adminJs&quo ...

  8. Magicodes.NET框架

    Magicodes.NET框架之路——让代码再飞一会(ASP.NET Scaffolding)   首先感谢大家对Magicodes.NET框架的支持.就如我上篇所说,框架成熟可能至少还需要一年,毕竟 ...

  9. HTML5实现涂鸦板

    原文:HTML5实现涂鸦板 最近闲的,看了看html5,强大的绘图功能让我惊奇,于是,写了个小玩意---涂鸦板,能实现功能有:画画,改色,调整画笔大小 html5的绘图可以分为点,线,面,圆,图片等, ...

  10. jrtplib的使用

    JRTPLIB库的使用 文档: http://research.edm.uhasselt.be/jori/jrtplib/documentation/index.html 一些介绍: http://d ...