在設計數據庫表的時候,經常會使用自增主鍵或其他自增字段。比如:
DB_UserGroups表中GroupID為該表主鍵,並為自增字段。
但在將某字段設置自增后,想在插入數據時,人為指定自增字段的數據內容。如:
·
insert into DB_UserGroups values(0,'全部')
·
這時SQL SERVER會提示:
·
消息 8101,級別 16,狀態 1,第 1 行 僅當使用了列列表並且 IDENTITY_INSERT 為 ON 時,才能為表'Northwind.dbo.DB_UserGroups'中的標識列指定顯式值。
·
通過提示可以看到,需要將IDENTITY_INSERT設為ON,通過以下語句即可打開:
·
SET IDENTITY_INSERT DB_UserGroups ON
·
但是現在再次執行insert語句的時候,發現仍然是這個錯誤,后來發現我語文沒學好,漏掉了一個條件,就是一開始提到的“僅當使用了列列表”,呃。。。好吧,需要這樣寫insert語句:
·
insert into DB_UserGroups(GroupID,GroupName) values(0,'全部') ·
恩,把要插入的字段全部在表名后標明,不可以省略,這樣就OK了。
如果不需要自定義自增字段數據,可以再次使用:
·
SET IDENTITY_INSERT DB_UserGroups OFF
·
關閉掉IDENTITY_INSERT。
·
PS.標識列的數據一旦添加,不可更改!不過可以先去掉標識列的“是標識”,然后改完再加回來。。。我只能想到這么多了。