SQL IDENTITY_INSERT作用案例詳解
一般情況下,當數(shù)據表中,莫一列被設置成了標識列之后,是無法向標識列中手動的去插入標識列的顯示值。但是,可以通過設置SET IDENTITY_INSERT屬性來實現(xiàn)對標識列中顯示值的手動插入。
寫法:
- SET IDENTITY_INSERT 表名 ON :表示開啟對標識列顯示值插入模式,允許對標識列顯示值進行手動插入數(shù)據。
- SET IDENTITY_INSERT 表名 OFF:表示關閉對標識列顯示值的插入操作,標識列不允許手動插入顯示值。
注意:IDENTITY_INSERT的開啟ON和關閉OFF是成對出現(xiàn)的,所以,在執(zhí)行完手動插入操作之后,記得一定要把IDENTITY_INSERT設置為OFF,否則下次的自動插入數(shù)據會插入失敗。
例如:
創(chuàng)建一張表b1,b_id為標識列,設置為唯一標識,從1開始,每次插入新數(shù)據時,值都遞增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列不允許手動去插入顯示值,只能由系統(tǒng)自動按照排順序去插入顯示的值。
1.當IDENTITY_INSERT 為OFF時,往表b1中插入2條數(shù)據,往標識列中手動插入顯示值:
代碼1:
insert into b1(b_id,b_name) values(1,'莉莉') insert into b1(b_id,b_name) values(2,'阿呆')
插入結果:
代碼2:
insert into b1(b_name) values('莉莉') insert into b1(b_name) values('阿呆')
插入結果:
說明:當把IDENTITY_INSERT設置為OFF時,標識列是不允許手動插入顯示值的,只能有系統(tǒng)去自動插入標識列的顯示值。
2.當IDENTITY_INSERT 為ON時,往表b1中插入2條數(shù)據,往標識列中手動插入顯示值:
代碼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 --關閉對標識列的插入操作,標識列不允許手動插入顯示值
插入結果:
代碼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 --關閉對標識列的插入操作,標識列不允許手動插入顯示值
插入結果:
說明:當設置IDENTITY_INSERT為ON時,必須要指定標識列中要插入的的顯示值,要手動的插入標識列中的顯示值。因為系統(tǒng)將不再對標識列的顯示值自動插入了。所以,必須要手動去給標識列插入顯示值。
到此這篇關于SQL IDENTITY_INSERT作用案例詳解的文章就介紹到這了,更多相關SQL IDENTITY_INSERT作用內容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。