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 05 MySQL
详解MySQL的半同步
Apr 22 MySQL
MySQL中你可能忽略的COLLATION实例详解
May 12 MySQL
详解GaussDB for MySQL性能优化
May 18 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
MySQL日期时间函数知识汇总
Mar 17 MySQL
mysql 获取时间方式
Mar 20 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
DQL数据查询语句使用示例
Dec 24 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
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
使用jquery实现简单的ajax
2013/07/08 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
js实现简易ATM功能
2020/10/27 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
网络工程专业毕业生推荐信
2013/10/28 职场文书
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
创业资金计划书
2014/02/06 职场文书
医院节能减排方案
2014/06/13 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python