SQL IDENTITY_INSERT作用案例詳解
一般情況下,當(dāng)數(shù)據(jù)表中,莫一列被設(shè)置成了標(biāo)識(shí)列之后,是無(wú)法向標(biāo)識(shí)列中手動(dòng)的去插入標(biāo)識(shí)列的顯示值。但是,可以通過(guò)設(shè)置SET IDENTITY_INSERT屬性來(lái)實(shí)現(xiàn)對(duì)標(biāo)識(shí)列中顯示值的手動(dòng)插入。
寫法:
- SET IDENTITY_INSERT 表名 ON :表示開啟對(duì)標(biāo)識(shí)列顯示值插入模式,允許對(duì)標(biāo)識(shí)列顯示值進(jìn)行手動(dòng)插入數(shù)據(jù)。
- SET IDENTITY_INSERT 表名 OFF:表示關(guān)閉對(duì)標(biāo)識(shí)列顯示值的插入操作,標(biāo)識(shí)列不允許手動(dòng)插入顯示值。
注意:IDENTITY_INSERT的開啟ON和關(guān)閉OFF是成對(duì)出現(xiàn)的,所以,在執(zhí)行完手動(dòng)插入操作之后,記得一定要把IDENTITY_INSERT設(shè)置為OFF,否則下次的自動(dòng)插入數(shù)據(jù)會(huì)插入失敗。
例如:
創(chuàng)建一張表b1,b_id為標(biāo)識(shí)列,設(shè)置為唯一標(biāo)識(shí),從1開始,每次插入新數(shù)據(jù)時(shí),值都遞增1,不允許為空:
CREATE table b1 ( b_id int identity(1,1) primary key not null, b_name varchar(20) null )
當(dāng)把表b1中b_id這一列設(shè)置為唯一標(biāo)識(shí)列的時(shí)候,IDENTITY_INSERT屬性的值就默認(rèn)被設(shè)置為了OFF了。標(biāo)識(shí)列b_id列不允許手動(dòng)去插入顯示值,只能由系統(tǒng)自動(dòng)按照排順序去插入顯示的值。
1.當(dāng)IDENTITY_INSERT 為OFF時(shí),往表b1中插入2條數(shù)據(jù),往標(biāo)識(shí)列中手動(dòng)插入顯示值:
代碼1:
insert into b1(b_id,b_name) values(1,'莉莉') insert into b1(b_id,b_name) values(2,'阿呆')
插入結(jié)果:
代碼2:
insert into b1(b_name) values('莉莉') insert into b1(b_name) values('阿呆')
插入結(jié)果:
說(shuō)明:當(dāng)把IDENTITY_INSERT設(shè)置為OFF時(shí),標(biāo)識(shí)列是不允許手動(dòng)插入顯示值的,只能有系統(tǒng)去自動(dòng)插入標(biāo)識(shí)列的顯示值。
2.當(dāng)IDENTITY_INSERT 為ON時(shí),往表b1中插入2條數(shù)據(jù),往標(biāo)識(shí)列中手動(dòng)插入顯示值:
代碼1:
set identity_insert b1 on --開啟對(duì)標(biāo)識(shí)列的插入模式,標(biāo)識(shí)列允許手動(dòng)插入顯示值 insert into b1(b_id,b_name) values(8,'小白') --手動(dòng)去插入標(biāo)識(shí)列b_id的顯示值為8 insert into b1(b_id,b_name) values(9,'小黑') set identity_insert b1 off --關(guān)閉對(duì)標(biāo)識(shí)列的插入操作,標(biāo)識(shí)列不允許手動(dòng)插入顯示值
插入結(jié)果:
代碼2:
set identity_insert b1 on --開啟對(duì)標(biāo)識(shí)列的插入模式,標(biāo)識(shí)列允許手動(dòng)插入顯示值 insert into b1(b_name) values('小胖') --手動(dòng)去插入標(biāo)識(shí)列b_id的顯示值為8 insert into b1(b_name) values('小寶') set identity_insert b1 off --關(guān)閉對(duì)標(biāo)識(shí)列的插入操作,標(biāo)識(shí)列不允許手動(dòng)插入顯示值
插入結(jié)果:
說(shuō)明:當(dāng)設(shè)置IDENTITY_INSERT為ON時(shí),必須要指定標(biāo)識(shí)列中要插入的的顯示值,要手動(dòng)的插入標(biāo)識(shí)列中的顯示值。因?yàn)橄到y(tǒng)將不再對(duì)標(biāo)識(shí)列的顯示值自動(dòng)插入了。所以,必須要手動(dòng)去給標(biāo)識(shí)列插入顯示值。
到此這篇關(guān)于SQL IDENTITY_INSERT作用案例詳解的文章就介紹到這了,更多相關(guān)SQL IDENTITY_INSERT作用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL制作具有千萬(wàn)條測(cè)試數(shù)據(jù)的測(cè)試庫(kù)的方法
這篇文章主要介紹了MySQL制作具有千萬(wàn)條測(cè)試數(shù)據(jù)的測(cè)試庫(kù)的方法,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下2020-11-11使用Memcache緩存mysql數(shù)據(jù)庫(kù)操作的原理和緩存過(guò)程淺析
這篇文章主要介紹了使用Memcache緩存mysql數(shù)據(jù)庫(kù)操作的原理和緩存過(guò)程淺析,本文著重點(diǎn)在Memcache和MySQL數(shù)據(jù)庫(kù)的交互過(guò)程及流程分解,需要的朋友可以參考下2014-07-07CentOS安裝mysql5.7 及簡(jiǎn)單配置教程詳解
這篇文章主要介紹了CentOS安裝mysql5.7 及簡(jiǎn)單配置教程詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02MySql 存儲(chǔ)引擎和索引相關(guān)知識(shí)總結(jié)
這篇文章主要介紹了MySql 存儲(chǔ)引擎和索引相關(guān)知識(shí)總結(jié),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06MySQL數(shù)據(jù)庫(kù)配置信息查看與修改方法詳解
我們通常把在項(xiàng)目中使用的常量收集在一個(gè)文件,這個(gè)文件就是配置文件,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)配置信息查看與修改的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06windows環(huán)境中mysql忘記root密碼的解決方法詳解
本篇文章是對(duì)windows環(huán)境中mysql忘記root密碼的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06