当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值
{"当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值"}
对于这个异常可以从两个角度来处理:A:数据库执行语句 B:直接修改NHibernate中持久化类映射配置文件id节点
A数据库执行语句:
问题描述:当在数据库表主键设计为 (Orderid int identity primary key),相对这个主键IDENTITY_INSERT默认设置为OFF,就是不能够显示插入主键id的值,例子如下:
insert into OrderList(id,OrderName) values(4520,'电子传票订单')执行上面语句会提示一个错误:
服务器: 消息 544,级别 16,状态 1,行 1
当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值。其中关于主键一条记录,当我们想把这条记录的id设置成我们自定义的4520时出现上面的错误,如果我们添加一些设置,修改方法如下:
--允许将显式值插入表的标识列中 ON-允许 OFF-不允许
set identity_insert OrderList ON--打开
insert into OrderList(id,ordername,createdate)
values(4520,'set',getdate())
set identity_insert OrderList OFF--关闭在执行这个插入语句时多了一个设置,该设置的语法是
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }
允许将显式值插入表的标识列中
参数说明:
database:针对数据库
table:针对某张表
ON:允许插入显式值插入 标识列
OFF:不允许
注意:

--问题注意
(1)任何时候,会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,并且为另一个表发出了 SET IDENTITY_INSERT ON 语句,则 Microsoft® SQL Server™ 返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON 并报告此属性已设置为 ON 的表
(2)如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用
(3)SET IDENTITY_INSERT 的设置是在执行或运行时设置,而不是在分析时设置
上面执行语句中:把要执行的语句前后加上该设置,当然上面针对事一条记录插入操作,在这条记录插入操作后,如果再次插入数据时,没有启用该设置,Orderid主键列会根据上面自定义表示4520,自动增长到4521.这个操作很灵活关键看个人怎么利用.
B:修改配置文件
我们通过直接修改配置文件来处理这个问题,
出错时文件配置:
--hibernate持久化类配置 注意id中Generator子节点设置Class属性为:assigned自动增长
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="TestHibernateExpre.Entities.OrderListModel,TestHibernateExpre" table="OrderList">
<id name="Orderid" column="id" type="int">
<!--id中参数的设置问:native/assigned/foreign/increment-->
<generator class="assigned"></generator>
</id>
</class>修改后文件配置:
--Hibernate中关于持久化类的配置 注意id下Generator子节点 class属性配置为native
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="TestHibernateExpre.Entities.OrderListModel,TestHibernateExpre" table="OrderList">
<id name="Orderid" column="id" type="int">
<!--id中参数的设置问:native/assigned/foreign/increment-->
<generator class="native"></generator>
</id>
</class>当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值的更多相关文章
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值。
出现以上错误是应为在执行insert语句时,将自动增加的字段加入,导致报错. 解决办法:把自增列的字段从插入语句中删除
- IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值 的解决方法一例
如题 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值 很多网上的文章是设置表的 IDENTITY_INSERT 为 ON EF中还要对模型就行设置 [Column(N ...
- EF:插入记录失败,提示当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值
EF忽然报错:增加记录时,提示当 IDENTITY_INSERT 设置为 OFF 时,不能向表 '...' 中的标识列插入显式值.真奇怪,添加记录方法一向好地地,从没出过错.要出错,那也是Update ...
- 仅当使用了列的列表 并且 identity_insert 为 on 时 才能在表 中为标识列指定显式值
当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'products' 中的标识列插入显式值.” 示例: 1.首先建立一个有标识列的表:CREATE TABLE products (i ...
- 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 中的标识列插入显式值错误的解决方法
一个主键.两个外键,把两个外键改为非空就行了. CREATE TABLE [dbo].[User_Compare]( ,) NOT NULL, [UserId] [int] NOT NULL, [Pa ...
- 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值
问题描述:在SQL SERVER 2008中,向数据表中字段插入数据时,会报错,错误如下: 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式 ...
- 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 '#TT' 中的标识列插入显式值。 sql server 临时表
当 IDENTITY_INSERT 设置为 OFF 时,不能向表 '#TT' 中的标识列插入显式值.我是在SqlServer写存储过程中遇到的这个错误,当时就心想:临时表怎么会有主键呢,我也没有设置主 ...
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表‘XXX’中的标识列插入显式值。
在创建事务复制时,很多时候不一定使用快照进行初始化,而是使用备份还原初始化.当对有标识列(即identity的自增列)的表进行复制的时候,使用备份还原初始化搭建起来的复制常常就会报错,即:当 IDEN ...
- 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题
今天在处理数据库过程中碰到这样的问题在插入一条数据到表中 系统报这样的错误 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题 表有一列是自增长的 ...
随机推荐
- OC中的内存问题
常见的内存问题有以下几种: 1.野指针异常:访问没有所有权的内存,如果想要安全的访问,必须确保空间还在 2.内存泄露:空间使用完之后没有及时释放 3.过度释放:对同一块存储空间释放多次,立刻crash ...
- 基础学习day08---多态、简单工厂、Object类equals和toString
一.多态 1.1.多态概念 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型:猫 x = new 猫(); 同时猫也是动物中的一种,也可以 ...
- iOS--APP 登录界面图(xuer)
ViewController.h #import "ViewController.h" @interface ViewController () @property(strong, ...
- IOS内存警告处理
IPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息.收到此消息后,app必须正确处理,否则可能出错或者出现内存泄露 ...
- iOS 摇一摇
- (void)viewDidLoad { [super viewDidLoad]; [[UIApplication sharedApplication] setApplicationSupports ...
- 如何写BaseDomain
上图摘自<Spring3.x企业应用开发实战> 提到了使用org.apache.commons.lang3.builder ToStringBuilder进行toString方法的统一. ...
- Java文件IO操作应该抛弃File拥抱Paths和Files
Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream;import java.nio.file.FileSystem; ...
- ERP产品价格成本计算的几个方法(转)
一般财务计算产品价格又很多方法,我这里做了几个供参考,实体属性主要是编号.数量.价格等,这里就不列出了. /// <summary> /// 先进先出算法 /// </s ...
- CentOS6.5(Python-2.7.12)安装Pip
1.安装setuptools(下载链接可从https://pypi.python.org/pypi/setuptools#code-of-conduct寻找) #Download setuptools ...
- 通过java来批量生成身份证号
通过java来批量生成身份证号,方便来测试程序. package com.diyvc.controller.user; import java.util.Calendar; import java.u ...