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对于模糊查询like的一些汇总
May 09 MySQL
带你学习MySQL执行计划
May 31 MySQL
MySQL8.0无法启动3534的解决方法
Jun 03 MySQL
解析MySQL binlog
Jun 11 MySQL
mysql连接查询中and与where的区别浅析
Jul 01 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
MySQL修炼之联结与集合浅析
Oct 05 MySQL
教你使用VS Code的MySQL扩展管理数据库的方法
Jan 22 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
MySQL池化框架学习接池自定义
Jul 23 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
第七节 类的静态成员 [7]
2006/10/09 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
详细介绍Python的鸭子类型
2016/09/12 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python基本socket通信控制操作示例
2019/01/30 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
Django密码存储策略分析
2020/01/09 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
Java基础面试题
2014/07/19 面试题
科室工作个人总结的自我评价
2013/10/29 职场文书
学生就业推荐信
2013/11/13 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
市场营销毕业求职信
2014/08/07 职场文书
浅析Django接口版本控制
2021/06/26 Python