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 角色(role)功能介绍
Apr 24 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
新手入门Mysql--sql执行过程
Jun 20 MySQL
mysql脏页是什么
Jul 26 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
MySQL利用UNION连接2个查询排序失效详解
Nov 20 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
解析MySQL索引的作用
Mar 03 MySQL
详解Mysq MVCC多版本的并发控制
Apr 29 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 MySQL
MySQL中EXPLAIN语句及用法
May 20 MySQL
MySQL数据库简介与基本操作
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
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
php表单提交实例讲解
2015/11/12 PHP
微信红包随机生成算法php版
2016/07/21 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
php提取微信账单的有效信息
2018/10/01 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
top.location.href 没有权限 解决方法
2008/08/05 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
详解C++编程中一元运算符的重载
2016/01/19 Python
Python温度转换实例分析
2018/01/17 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
django解决跨域请求的问题
2018/11/11 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
python实现的生成word文档功能示例
2019/08/23 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
Tostadora意大利:定制T恤
2019/04/08 全球购物
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
综合内勤岗位职责
2014/04/14 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
大学生求职意向书
2015/05/11 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python