SQL執行set identity_insert on錯誤8106

轉載地址:https://zhidao.baidu.com/question/743885436593528652.html
SET IDENTITY_INSERT [TABLENAME] {ON|OFF}從字面的意思看是用來在插入主鍵時設置主鍵狀態的。這個主鍵指的是自增長的主鍵。

2.2使用方法
2.2.1首先,這條語句只對自增長的主鍵生效,經過在查詢分析器上的試驗,如果主鍵不爲自增長類型會報如下錯誤:

服務器: 消息 8106,級別 16,狀態 1,行 1
表 'test1' 沒有標識屬性。無法執行 SET 操作。

也是說他和自增長這個標識有關係。

2.2.2
其次,這條語句是用在“執行時或運行時,而不是分析時”。根據我的理解,我認爲意思是,當存儲過程或是sql語句執行時執行,而不是在建立表的分析時執
行。他的執行可以永久的改變狀態,但是查看主鍵的狀態時卻不發生變化。雖然展示找不到他把這個狀態存儲在哪裏,但我想,應該存儲在系統表中。

2.2.3這是我在查詢分析器上做了試驗的幾條語句:
2.2.3-1表test1,有非自增長字段id(int),v(char),執行insert into wangwh.dbo.test1 (id,v)values(1,'test'),結果爲:

服務器: 消息 8106,級別 16,狀態 1,行 1
表 'test1' 沒有標識屬性。無法執行 SET 操作。

2.2.3-2表test,有自增長字段id(int),v(char),將下邊的語句分開執行。
//直接插入一條數據
insert into wangwh.dbo.test (id,v)values(1,'test')將提示

服務器: 消息 544,級別 16,狀態 1,行 1
當 IDENTITY_INSERT 設置爲 OFF 時,不能向表 'test1' 中的標識列插入顯式值。

//進行SET IDENTITY_INSERT 設置後,插入1條數據
set identity_insert wangwh.dbo.test1 on
insert into wangwh.dbo.test1 (id,v)values(1,'test')將提示
set identity_insert wangwh.dbo.test1 off
(所影響的行數爲 1 行)

2.2.3-3如果將狀態設置on的話將可以一直插入如果不希望一直能插入的話,還需要進行off的設置。因爲一旦狀態設置爲on那麼下次插入時就必須連同ID一起插入,否則就會報出如下錯誤:

服務器: 消息 545,級別 16,狀態 1,行 1
當 IDENTITY_INSERT 設置爲 ON 時,必須指定表 'test1' 中標識列的顯式值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章