SET IDENTITY_INSERT [TABLENAME] {ON|OFF}從字面的意思看是用來(lái)在插入主鍵時(shí)設(shè)置主鍵狀態(tài)的。這個(gè)主鍵指的是自增長(zhǎng)的主鍵。2.2使用方法2.2.1首先,這條語(yǔ)句只對(duì)自增長(zhǎng)的主鍵生效,經(jīng)過在查詢分析器上的試驗(yàn),如果主鍵不為自增長(zhǎng)類型會(huì)報(bào)如下錯(cuò)誤:服務(wù)器: 消息 8106,級(jí)別 16,狀態(tài) 1,行 1表 'test1' 沒有標(biāo)識(shí)屬性。無(wú)法執(zhí)行 SET 操作。也是說他和自增長(zhǎng)這個(gè)標(biāo)識(shí)有關(guān)系。2.2.2其次,這條語(yǔ)句是用在“執(zhí)行時(shí)或運(yùn)行時(shí),而不是分析時(shí)”。根據(jù)我的理解,我認(rèn)為意思是,當(dāng)存儲(chǔ)過程或是sql語(yǔ)句執(zhí)行時(shí)執(zhí)行,而不是在建立表的分析時(shí)執(zhí)行。他的執(zhí)行可以永久的改變狀態(tài),但是查看主鍵的狀態(tài)時(shí)卻不發(fā)生變化。雖然展示找不到他把這個(gè)狀態(tài)存儲(chǔ)在哪里,但我想,應(yīng)該存儲(chǔ)在系統(tǒng)表中。2.2.3這是我在查詢分析器上做了試驗(yàn)的幾條語(yǔ)句:2.2.3-1表test1,有非自增長(zhǎng)字段id(int),v(char),執(zhí)行insert into wangwh.dbo.test1 (id,v)values(1,'test'),結(jié)果為:服務(wù)器: 消息 8106,級(jí)別 16,狀態(tài) 1,行 1表 'test1' 沒有標(biāo)識(shí)屬性。無(wú)法執(zhí)行 SET 操作。2.2.3-2表test,有自增長(zhǎng)字段id(int),v(char),將下邊的語(yǔ)句分開執(zhí)行。//直接插入一條數(shù)據(jù)insert into wangwh.dbo.test (id,v)values(1,'test')將提示服務(wù)器: 消息 544,級(jí)別 16,狀態(tài) 1,行 1當(dāng) IDENTITY_INSERT 設(shè)置為 OFF 時(shí),不能向表 'test1' 中的標(biāo)識(shí)列插入顯式值。//進(jìn)行SET IDENTITY_INSERT 設(shè)置后,插入1條數(shù)據(jù)set identity_insert wangwh.dbo.test1 oninsert into wangwh.dbo.test1 (id,v)values(1,'test')將提示set identity_insert wangwh.dbo.test1 off(所影響的行數(shù)為 1 行)2.2.3-3如果將狀態(tài)設(shè)置on的話將可以一直插入如果不希望一直能插入的話,還需要進(jìn)行off的設(shè)置。因?yàn)橐坏顟B(tài)設(shè)置為on那么下次插入時(shí)就必須連同ID一起插入,否則就會(huì)報(bào)出如下錯(cuò)誤:服務(wù)器: 消息 545,級(jí)別 16,狀態(tài) 1,行 1當(dāng) IDENTITY_INSERT 設(shè)置為 ON 時(shí),必須指定表 'test1' 中標(biāo)識(shí)列的顯式值。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注