SQL IDENTITY_INSERT作用案例详解


Posted in MySQL onAugust 23, 2021

一般情况下,当数据表中,莫一列被设置成了标识列之后,是无法向标识列中手动的去插入标识列的显示值。但是,可以通过设置SET IDENTITY_INSERT属性来实现对标识列中显示值的手动插入。

写法:

  1. SET IDENTITY_INSERT 表名 ON :表示开启对标识列显示值插入模式,允许对标识列显示值进行手动插入数据。
  2. SET IDENTITY_INSERT 表名 OFF:表示关闭对标识列显示值的插入操作,标识列不允许手动插入显示值。

注意:IDENTITY_INSERT的开启ON和关闭OFF是成对出现的,所以,在执行完手动插入操作之后,记得一定要把IDENTITY_INSERT设置为OFF,否则下次的自动插入数据会插入失败。

例如:

创建一张表b1,b_id为标识列,设置为唯一标识,从1开始,每次插入新数据时,值都递增1,不允许为空:

CREATE table b1
(
b_id int identity(1,1) primary key not null,   
b_name varchar(20) null
)

当把表b1中b_id这一列设置为唯一标识列的时候,IDENTITY_INSERT属性的值就默认被设置为了OFF了。标识列b_id列不允许手动去插入显示值,只能由系统自动按照排顺序去插入显示的值。

1.当IDENTITY_INSERT 为OFF时,往表b1中插入2条数据,往标识列中手动插入显示值:

 代码1:

insert into b1(b_id,b_name) values(1,'莉莉')
insert into b1(b_id,b_name) values(2,'阿呆')

插入结果:

SQL IDENTITY_INSERT作用案例详解

代码2:

insert into b1(b_name) values('莉莉')
insert into b1(b_name) values('阿呆')

插入结果:

SQL IDENTITY_INSERT作用案例详解

说明:当把IDENTITY_INSERT设置为OFF时,标识列是不允许手动插入显示值的,只能有系统去自动插入标识列的显示值。

2.当IDENTITY_INSERT 为ON时,往表b1中插入2条数据,往标识列中手动插入显示值:

代码1:

set identity_insert b1 on --开启对标识列的插入模式,标识列允许手动插入显示值
insert into b1(b_id,b_name) values(8,'小白')  --手动去插入标识列b_id的显示值为8
insert into b1(b_id,b_name) values(9,'小黑')
set identity_insert b1 off --关闭对标识列的插入操作,标识列不允许手动插入显示值

插入结果:

SQL IDENTITY_INSERT作用案例详解

代码2:

set identity_insert b1 on --开启对标识列的插入模式,标识列允许手动插入显示值
insert into b1(b_name) values('小胖')  --手动去插入标识列b_id的显示值为8
insert into b1(b_name) values('小宝')
set identity_insert b1 off --关闭对标识列的插入操作,标识列不允许手动插入显示值

插入结果:

SQL IDENTITY_INSERT作用案例详解

说明:当设置IDENTITY_INSERT为ON时,必须要指定标识列中要插入的的显示值,要手动的插入标识列中的显示值。因为系统将不再对标识列的显示值自动插入了。所以,必须要手动去给标识列插入显示值。

到此这篇关于SQL IDENTITY_INSERT作用案例详解的文章就介绍到这了,更多相关SQL IDENTITY_INSERT作用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL 存储过程的优缺点分析
May 20 MySQL
MySQL不使用order by实现排名的三种思路总结
Jun 02 MySQL
MySQL快速插入一亿测试数据
Jun 23 MySQL
MySQL连接控制插件介绍
Sep 25 MySQL
浅谈MySQL表空间回收的正确姿势
Oct 05 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
一条 SQL 语句执行过程
Mar 17 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
关于MySQL临时表为什么可以重名的问题
Mar 22 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
mysql查找连续出现n次以上的数字
May 11 MySQL
mysql5.5中文乱码问题解决的有用方法
May 30 MySQL
MySQL非空约束(not null)案例讲解
Aug 23 #MySQL
MySQL外键约束(FOREIGN KEY)案例讲解
Aug 23 #MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 #MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 #MySQL
MySQL如何解决幻读问题
Aug 07 #MySQL
浅谈MySQL之select优化方案
Aug 07 #MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 #MySQL
You might like
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
JS中的BOM应用
2018/02/02 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
Python实现partial改变方法默认参数
2014/08/18 Python
玩转python爬虫之正则表达式
2016/02/17 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
python如何实现int函数的方法示例
2018/02/19 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
vscode调试django项目的方法
2020/08/06 Python
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
2015年煤矿工作总结
2015/04/28 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
签证工作证明模板
2015/06/15 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
解析Java中的static关键字
2021/06/14 Java/Android
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android