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 隔离数据列和前缀索引的使用总结
May 14 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
May 27 MySQL
安装配置mysql及Navicat prenium的详细流程
Jun 10 MySQL
MySQL数据库必备之条件查询语句
Oct 15 MySQL
MySQL基于索引的压力测试的实现
Nov 07 MySQL
Mysql分库分表之后主键处理的几种方法
Feb 15 MySQL
深入讲解数据库中Decimal类型的使用以及实现方法
Feb 15 MySQL
Mysql分析设计表主键为何不用uuid
Mar 31 MySQL
MySQL 数据表操作
May 04 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySQL中LAG()函数和LEAD()函数的使用
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
PHP 程序员应该使用的10个组件
2009/10/31 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
js转html实体的方法
2016/09/27 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
Python安装whl文件过程图解
2020/02/18 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
Django日志及中间件模块应用案例
2020/09/10 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
自考生自我鉴定范文
2013/10/01 职场文书
银行员工辞职信范文
2014/01/20 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
开网店计划分析
2019/07/30 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
Node与Python 双向通信的实现代码
2021/07/16 Javascript
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫