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 pt-slave-restart工具的使用简介
Apr 07 MySQL
Mysql 设置boolean类型的操作
Jun 04 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
解决Mysql的left join无效及使用的注意事项说明
Jul 01 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
mysql中数据库覆盖导入的几种方式总结
Mar 25 MySQL
mysql的Buffer Pool存储及原理
Apr 02 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
mysql 获取相邻数据项
May 11 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
Terran热键控制
2020/03/14 星际争霸
深入PHP magic quotes的详解
2013/06/17 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
尼克松手表官网:Nixon手表
2019/03/17 全球购物
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
护理专科毕业生自荐书范文
2014/02/19 职场文书
英语复习计划
2015/01/19 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书