{"当 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 时,不能为表中的标识列插入显式值相关推荐

  1. Navicat向sqlserver中插入数据时提示:当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值

    场景 通过Navicat向sqlserver中插入一条数据时提示: 解决 这是因为在设计表时,将主键ID设置为自增约束,当插入数据或者执行插入语句时,如果包含这个 主键字段,就会提示错误. 打开数据库 ...

  2. 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 中的标识列插入显式值错误的解决方法...

    一个主键.两个外键,把两个外键改为非空就行了. CREATE TABLE [dbo].[User_Compare]([Id] [int] IDENTITY(1,1) NOT NULL,[UserId] ...

  3. 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'WLog' 中的标识列插入显式值。

    在使用SQLServer数据库的时候,在进行数据报错过程中,出现如下异常: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'WLog' 中的标识列插入显式值. 当前表没有设置关联关 ...

  4. 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题...

    今天在处理数据库过程中碰到这样的问题在插入一条数据到表中 系统报这样的错误 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题 表有一列是自增长的 ...

  5. 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘xxx‘ 中的标识列插入显式值。 java解决方案

    原因是: 当数据库中的id字段设置为了主键并且是自动增长的,那么我们就不可以在insert into 语句中手动插入id值. 那么只要我们执行SET IDENTITY_INSERT xxx ON将其设 ...

  6. hibernate执行插入时候报错: IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘user‘ 中的标识列插入显式值

    插入时会报错 @Id // 使用的hibernate 的自动增量,没有用数据库的自动增量型 @GeneratedValue(generator = "increment") @Ge ...

  7. 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'Logger' 中的标识列插入显式值

    当使用mybatis插入数据时提示这个错误,原因是主键设置为自增长的,所以我们不需要再sql语句中再添加该主键字段了. 这个是很简单的,当时却怎么也不知道原因,看了网上很多例子,都不是很好,所以我写了 ...

  8. sqlserver 插入数据时异常,仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'XXXXX.dbo.XXXXXXXXX'中的标识列指定显式值。...

    INSERT INTO XXXXXXXXX.dbo.XXXXXXXXX select * from XXXXXXXXX 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'X ...

  9. 消息 8101,级别 16,状态 1,第 1 行仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'CUSTOMER_TBL'中的标识列指定显式值。...

    像这样的问题怎么解决呢? 问题分析: 意思是你的主键是自动编号类型的,所以不能向该列插入数据. 解决办法: 执行 语句 :SET IDENTITY_INSERT CUSTOMER_TBL ON 然后在 ...

最新文章

  1. 磁盘加密软件TrueCrypt知识大全(二)之创建文件型加密卷
  2. 英特尔是 Chrome OS 代码的第二大贡献者
  3. 前端图片有时候能显示有时候不显示_如何自动搞定全站图片的alt属性?
  4. Android NDK
  5. reset.css页面样式初始化
  6. 2012三年大专计算机试题医学,计算机原理2012年4月真题(02384)
  7. 单元和集成测试的代码覆盖率
  8. 和平精英android怎么写符号,和平精英名字符号大全 可用的名字特殊符号有哪些...
  9. CEdit CRichEdit 使用技巧(转)
  10. iOS 音频播放时听筒及扬声器切换
  11. linux下分析prn文件,Linux文件的管理
  12. 安卓刷机及刷机包制作教程
  13. 利用GDAL根据栅格影像DN值实现颜色渲染
  14. 邓奶奶坐轮椅泪别袁爷爷
  15. 电脑打开网络没有WiFi列表
  16. “统计套利”是怎么玩的?可以稳定获利吗?
  17. OSPF网络类型以及不规则区域练习
  18. 【Verilog】一、Verilog概述
  19. 《沈剑架构师训练营》第2章 - 接入层架构
  20. css 手抓,CSS 像素画 - 手和箭头

热门文章

  1. OpenGL 调试Debugging
  2. C语言实现希尔排序shell sort算法之二(附完整源码)
  3. QT的QImage类的使用
  4. QT的QDesignerContainerExtension类的使用
  5. php 反向截取,反向PHP功能
  6. Docker容器间通讯,直接路由方式实现网络通讯
  7. shell编程--基本格式,基本语法,运算符,expr,(()),$[]
  8. Git环境搭建与基本使用方法 (转自http://blog.csdn.net/fireelement/article/details/9618363)
  9. STL之multiset中equal_range,multimap中的equal_range,bitset容器,string字符串操作,lambda表达式
  10. 系统架构设计师考试大纲