sql IDENTITY_INSERT對標(biāo)識列的作用和使用
一般情況下,當(dāng)數(shù)據(jù)表中,莫一列被設(shè)置成了標(biāo)識列之后,是無法向標(biāo)識列中手動的去插入標(biāo)識列的顯示值。但是,可以通過設(shè)置SET IDENTITY_INSERT屬性來實現(xiàn)對標(biāo)識列中顯示值的手動插入。
寫法:
1).SET IDENTITY_INSERT 表名 ON :表示開啟對標(biāo)識列顯示值插入模式,允許對標(biāo)識列顯示值進行手動插入數(shù)據(jù)。
2).SET IDENTITY_INSERT 表名 OFF:表示關(guān)閉對標(biāo)識列顯示值的插入操作,標(biāo)識列不允許手動插入顯示值。
注意:IDENTITY_INSERT的開啟ON和關(guān)閉OFF是成對出現(xiàn)的,所以,在執(zhí)行完手動插入操作之后,記得一定要把IDENTITY_INSERT設(shè)置為OFF,否則下次的自動插入數(shù)據(jù)會插入失敗。
例如:
創(chuàng)建一張表b1,b_id為標(biāo)識列,設(shè)置為唯一標(biāo)識,從1開始,每次插入新數(shù)據(jù)時,值都遞增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)識列的時候,IDENTITY_INSERT屬性的值就默認(rèn)被設(shè)置為了OFF了。標(biāo)識列b_id列不允許手動去插入顯示值,只能由系統(tǒng)自動按照排順序去插入顯示的值。
1.當(dāng)IDENTITY_INSERT 為OFF時,往表b1中插入2條數(shù)據(jù),往標(biāo)識列中手動插入顯示值:
代碼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時,標(biāo)識列是不允許手動插入顯示值的,只能有系統(tǒng)去自動插入標(biāo)識列的顯示值。
2.當(dāng)IDENTITY_INSERT 為ON時,往表b1中插入2條數(shù)據(jù),往標(biāo)識列中手動插入顯示值:
代碼1:
set identity_insert b1 on --開啟對標(biāo)識列的插入模式,標(biāo)識列允許手動插入顯示值
insert into b1(b_id,b_name) values(8,'小白') --手動去插入標(biāo)識列b_id的顯示值為8 insert into b1(b_id,b_name) values(9,'小黑')
set identity_insert b1 off --關(guān)閉對標(biāo)識列的插入操作,標(biāo)識列不允許手動插入顯示值
插入結(jié)果:

代碼2:
set identity_insert b1 on --開啟對標(biāo)識列的插入模式,標(biāo)識列允許手動插入顯示值
insert into b1(b_name) values('小胖') --手動去插入標(biāo)識列b_id的顯示值為8
insert into b1(b_name) values('小寶')set identity_insert b1 off --關(guān)閉對標(biāo)識列的插入操作,標(biāo)識列不允許手動插入顯示值
插入結(jié)果:

說明:當(dāng)設(shè)置IDENTITY_INSERT為ON時,必須要指定標(biāo)識列中要插入的的顯示值,要手動的插入標(biāo)識列中的顯示值。因為系統(tǒng)將不再對標(biāo)識列的顯示值自動插入了。所以,必須要手動去給標(biāo)識列插入顯示值。
到此這篇關(guān)于sql IDENTITY_INSERT對標(biāo)識列的作用和使用的文章就介紹到這了,更多相關(guān)sql IDENTITY_INSERT對標(biāo)識列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQLserver中字符串查找功能patindex和charindex的區(qū)別
CHARINDEX 和 PATINDEX 函數(shù)都返回指定模式的開始位置,PATINDEX 可使用通配符,而 CHARINDEX 不可以2012-05-05
關(guān)于SQL 存儲過程入門基礎(chǔ)(基礎(chǔ)知識)
本篇文章,小編將為大家介紹關(guān)于SQL 存儲過程入門基礎(chǔ)(基礎(chǔ)知識),有需要的朋友可以參考一下2013-04-04
判斷一個表的數(shù)據(jù)不在另一個表中最優(yōu)秀方法
判斷一個表的數(shù)據(jù)不在另一個表中最優(yōu)秀方法2009-11-11
sqlserver 禁用觸發(fā)器和啟用觸發(fā)器的語句
sqlserver 禁用觸發(fā)器和啟用觸發(fā)器的語句,有需要的朋友可以試試。2009-09-09
數(shù)據(jù)庫觸發(fā)器DB2和SqlServer有哪些區(qū)別
大部分?jǐn)?shù)據(jù)庫語句的基本語法是相同的,但具體到的每一種數(shù)據(jù)庫,又有些不一樣,例如觸發(fā)器,DB2和SQL Server兩種很大的不同。對數(shù)據(jù)庫觸發(fā)器DB2和SqlServer有哪些區(qū)別感興趣的朋友一起看看本文吧2015-11-11
SQL Server簡單模式下誤刪除堆表記錄恢復(fù)方法(繞過頁眉校驗)
這篇主旨是揭示堆表的刪除記錄找回的原理,我所考慮的方面并不適用于每個人的每種情況,望大家見諒2013-01-01

