sql IDENTITY_INSERT對標識列的作用和使用
一般情況下,當數(shù)據(jù)表中,莫一列被設(shè)置成了標識列之后,是無法向標識列中手動的去插入標識列的顯示值。但是,可以通過設(shè)置SET IDENTITY_INSERT屬性來實現(xiàn)對標識列中顯示值的手動插入。
寫法:
1).SET IDENTITY_INSERT 表名 ON :表示開啟對標識列顯示值插入模式,允許對標識列顯示值進行手動插入數(shù)據(jù)。
2).SET IDENTITY_INSERT 表名 OFF:表示關(guān)閉對標識列顯示值的插入操作,標識列不允許手動插入顯示值。
注意:IDENTITY_INSERT的開啟ON和關(guān)閉OFF是成對出現(xiàn)的,所以,在執(zhí)行完手動插入操作之后,記得一定要把IDENTITY_INSERT設(shè)置為OFF,否則下次的自動插入數(shù)據(jù)會插入失敗。
例如:
創(chuàng)建一張表b1,b_id為標識列,設(shè)置為唯一標識,從1開始,每次插入新數(shù)據(jù)時,值都遞增1,不允許為空:
CREATE table b1 ( b_id int identity(1,1) primary key not null, b_name varchar(20) null )
當把表b1中b_id這一列設(shè)置為唯一標識列的時候,IDENTITY_INSERT屬性的值就默認被設(shè)置為了OFF了。標識列b_id列不允許手動去插入顯示值,只能由系統(tǒng)自動按照排順序去插入顯示的值。
1.當IDENTITY_INSERT 為OFF時,往表b1中插入2條數(shù)據(jù),往標識列中手動插入顯示值:
代碼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é)果:
說明:當把IDENTITY_INSERT設(shè)置為OFF時,標識列是不允許手動插入顯示值的,只能有系統(tǒng)去自動插入標識列的顯示值。
2.當IDENTITY_INSERT 為ON時,往表b1中插入2條數(shù)據(jù),往標識列中手動插入顯示值:
代碼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 --關(guān)閉對標識列的插入操作,標識列不允許手動插入顯示值
插入結(jié)果:
代碼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 --關(guān)閉對標識列的插入操作,標識列不允許手動插入顯示值
插入結(jié)果:
說明:當設(shè)置IDENTITY_INSERT為ON時,必須要指定標識列中要插入的的顯示值,要手動的插入標識列中的顯示值。因為系統(tǒng)將不再對標識列的顯示值自動插入了。所以,必須要手動去給標識列插入顯示值。
到此這篇關(guān)于sql IDENTITY_INSERT對標識列的作用和使用的文章就介紹到這了,更多相關(guān)sql IDENTITY_INSERT對標識列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
sqlserver實現(xiàn)樹形結(jié)構(gòu)遞歸查詢(無限極分類)的方法
下面小編就為大家?guī)硪黄猻qlserver實現(xiàn)樹形結(jié)構(gòu)遞歸查詢(無限極分類)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07淺述SQL Server的語句類別 數(shù)據(jù)庫范式 系統(tǒng)數(shù)據(jù)庫組成
本文著重講解了SQL語句的組成以及數(shù)據(jù)庫的三個范式,對系統(tǒng)數(shù)據(jù)庫的組成進行簡短的介紹。有興趣的朋友可以看下2016-12-12SQL Server中查詢結(jié)果超出了查詢時間范圍解決方法
在本篇文章里小編給大家整理的是關(guān)于SQL Server中查詢結(jié)果超出了查詢時間范圍解決方法,有需要的朋友們學(xué)習(xí)下。2019-11-11SQL語句實現(xiàn)查詢SQL Server服務(wù)器名稱和IP地址
這篇文章主要介紹了SQL語句實現(xiàn)查詢SQL Server服務(wù)器名稱和IP地址,本文分別給出查詢語句,需要的朋友可以參考下2015-07-07MDF文件在SQL Server中的恢復(fù)技術(shù)
MDF文件在SQL Server中的恢復(fù)技術(shù)...2007-01-01mssql server 數(shù)據(jù)庫附加不上解決辦法分享
在我們做開發(fā)中經(jīng)常會對數(shù)據(jù)庫進行備份,但有時假就會出現(xiàn)數(shù)據(jù)庫附加不上問題,下面我們來看看一個朋友的解決辦法2011-09-09sqlserver數(shù)據(jù)庫出現(xiàn)置疑的解決思路
首先新建一個同名的數(shù)據(jù)庫,然后再停掉sql server服務(wù),用原數(shù)據(jù)庫的數(shù)據(jù)文件覆蓋掉這個新建的數(shù)據(jù)庫文件,重啟sql server服務(wù)。感興趣的朋友可以參考下哈,希望可以幫助到你2013-03-03SQL Server 2005/2008 用戶數(shù)據(jù)庫文件默認路徑和默認備份路徑修改方法
本環(huán)境是SQL Server 2005 Standard Version 64-bit 和 SQL Server 2008 Standard Version 64-bit 雙實例同時安裝在一個2010-04-04
Windows Server 2008 Standard Version 64-bit OS上