{当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值}

2023-10-22 23:20

本文主要是介绍{当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值},希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

当 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:不允许

注意:

当 <wbr>IDENTITY_INSERT <wbr>设置为 <wbr>OFF <wbr>时,不能为表中的标识列插入显式值 当 <wbr>IDENTITY_INSERT <wbr>设置为 <wbr>OFF <wbr>时,不能为表中的标识列插入显式值 Code
--问题注意

(
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 >
转自: http://blog.sina.com.cn/s/blog_7eecafbc0100rax7.html
转自:http://www.cnblogs.com/chenkai/archive/2009/04/13/1434606.html
分类: SQL SERVER 2005

这篇关于{当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值}的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/264231

相关文章

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、