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 相关文章推荐
多表查询、事务、DCL
Apr 05 MySQL
MYSQL主从数据库同步备份配置的方法
May 26 MySQL
MySQL系列之六 用户与授权
Jul 02 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
深入讲解数据库中Decimal类型的使用以及实现方法
Feb 15 MySQL
MySQL数据库完全卸载的方法
Mar 03 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
mysql的Buffer Pool存储及原理
Apr 02 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 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
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
php实现留言板功能
2017/03/05 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
JavaScript 学习历程和心得分享
2010/12/12 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
理解javascript对象继承
2016/04/17 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
python 日期排序的实例代码
2019/07/11 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
python 画函数曲线示例
2019/12/04 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
北京SQL新华信咨询
2016/09/30 面试题
日语专业个人求职信范文
2014/02/02 职场文书
初中生自我鉴定
2014/02/04 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
公务员年度个人总结
2015/02/12 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python
Java中的Kotlin 内部类原理
2022/06/16 Java/Android