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 函数调用优化
Apr 07 MySQL
MySQL Router的安装部署
Apr 24 MySQL
详解MySQL 联合查询优化机制
May 10 MySQL
Mysql基础知识点汇总
May 26 MySQL
mysql优化之query_cache_limit参数说明
Jul 01 MySQL
MySQL创建定时任务
Jan 22 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
Mysql多层子查询示例代码(收藏夹案例)
Mar 31 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 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
2.PHP入门
2006/10/09 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
Yii中创建自己的Widget实例
2016/01/05 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
python端口扫描系统实现方法
2014/11/19 Python
Python创建系统目录的方法
2015/03/11 Python
python实现windows下文件备份脚本
2018/05/27 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
python 调试冷知识(小结)
2019/11/11 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
yy婚礼司仪主持词
2014/03/14 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书