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
left join、inner join、right join的区别
Apr 05 MySQL
MySQL索引知识的一些小妙招总结
May 10 MySQL
MySQL注入基础练习
May 30 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
Mysql排序的特性详情
Nov 01 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
pt-archiver 主键自增
Apr 26 MySQL
MySQL批量更新不同表中的数据
May 11 MySQL
mysqldump进行数据备份详解
Jul 15 MySQL
mysql通过group by分组取最大时间对应数据的两种有效方法
Sep 23 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.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
阿里云ecs服务器中安装部署node.js的步骤
2016/10/08 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
简述vue中的config配置
2018/01/23 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
浅析Python中的join()方法的使用
2015/05/19 Python
Python连接DB2数据库
2016/08/27 Python
python处理xml文件的方法小结
2017/05/02 Python
python自动12306抢票软件实现代码
2018/02/24 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
公司股权转让协议书
2014/04/12 职场文书
餐厅筹备计划书
2014/04/25 职场文书
感恩之星事迹材料
2014/05/03 职场文书
本科应届生自荐信
2014/06/29 职场文书
小学开学标语
2014/07/01 职场文书
给校长的一封检讨书
2014/09/20 职场文书
工作收入证明模板
2014/10/10 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
五年级学生评语大全
2014/12/26 职场文书
教学督导岗位职责
2015/04/10 职场文书
信用卡收入证明范本
2015/06/12 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技