SQL IDENTITY_INSERT作用案例詳解
一般情況下,當(dāng)數(shù)據(jù)表中,莫一列被設(shè)置成了標(biāo)識(shí)列之后,是無法向標(biāo)識(shí)列中手動(dòng)的去插入標(biāo)識(shí)列的顯示值。但是,可以通過設(shè)置SET IDENTITY_INSERT屬性來實(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é)果:

說明:當(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é)果:

說明:當(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)文章
簡(jiǎn)單實(shí)現(xiàn)MySQL服務(wù)器的優(yōu)化配置方法
我們今天主要向大家描述的是MySQL服務(wù)器的優(yōu)化配置的時(shí)機(jī)操作步驟,以及在MySQL服務(wù)器的優(yōu)化配置的的過程中值得我們主義的事項(xiàng)的介紹。2011-03-03
避免MySQL中的隱式轉(zhuǎn)換的方法小結(jié)
在 MySQL 中,隱式轉(zhuǎn)換可能導(dǎo)致索引失效、結(jié)果不符合預(yù)期或性能問題,以下是避免隱式轉(zhuǎn)換的具體方法,從表設(shè)計(jì)、查詢編寫到配置優(yōu)化,逐步減少隱式轉(zhuǎn)換的發(fā)生,具體操作過程跟隨小編一起看看吧2025-04-04
關(guān)于mysql?left?join?查詢慢時(shí)間長(zhǎng)的踩坑總結(jié)
這篇文章主要介紹了關(guān)于mysql?left?join?查詢慢時(shí)間長(zhǎng)的踩坑總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
完美解決mysql in條件語句只讀取一條信息問題的2種方案
使用mysql多表查詢時(shí)一個(gè)表中的某個(gè)字段作為另一表的in查詢條件,只能讀取一條信息,而直接用數(shù)字的話可以正常讀取2018-04-04
MySQL?Binlog日志的記錄模式寫入機(jī)制文件操作詳解
這篇文章主要介紹了MySQL?Binlog日志的記錄模式寫入機(jī)制文件操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
mysql實(shí)現(xiàn)批量修改字段null值改為空字符串
這篇文章主要介紹了mysql實(shí)現(xiàn)批量修改字段null值改為空字符串,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-08-08
VS2019連接mysql8.0數(shù)據(jù)庫的教程圖文詳解
這篇文章主要介紹了VS2019連接mysql8.0數(shù)據(jù)庫的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
MYSQL必知必會(huì)讀書筆記第八章之使用通配符進(jìn)行過濾
這篇文章主要介紹了MYSQL必知必會(huì)讀書筆記第八章之使用通配符進(jìn)行過濾的相關(guān)資料,需要的朋友可以參考下2016-05-05
mysql 獲取規(guī)定時(shí)間段內(nèi)的統(tǒng)計(jì)數(shù)據(jù)
這篇文章主要介紹了mysql 獲取規(guī)定時(shí)間段內(nèi)的統(tǒng)計(jì)數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2017-05-05
輕松上手MYSQL之JSON函數(shù)實(shí)現(xiàn)高效數(shù)據(jù)查詢與操作
這篇文章主要介紹了輕松上手MYSQL之JSON函數(shù)實(shí)現(xiàn)高效數(shù)據(jù)查詢與操作的相關(guān)資料,MySQL提供了多個(gè)JSON函數(shù),用于處理和查詢JSON數(shù)據(jù),這些函數(shù)包括JSON_EXTRACT、JSON_UNQUOTE、JSON_KEYS、JSON_ARRAY等,涵蓋了從提取數(shù)據(jù)到驗(yàn)證的各個(gè)方面,需要的朋友可以參考下2025-02-02

