在SQL Server資料庫中為標識(IDENTITY)列插入顯式值_MsSql
來源:互聯網
上載者:User
如果我們在識別欄位中插入值,例如:
insert member(id,username) values(10,'admin')
則在查詢分析器裡面會返回錯誤資訊:
引用內容
伺服器: 訊息 544,層級 16,狀態 1,行 1
當 IDENTITY_Insert 設定為 OFF 時,不能向表 'member' 中的識別欄位插入顯式值。
而在ASP程式中會返回錯誤資訊:
引用內容
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e14'
當 IDENTITY_Insert 設定為 OFF 時,不能向表 'member' 中的識別欄位插入顯式值。
test.asp,行 13
但有的情況我們需要手動插入識別欄位的值,例如刪除了一些記錄後,識別欄位並不連續,而我們又想把它補齊。我們利用一個開關可以讓願望變成現實:
SET IDENTITY_Insert [TableName] ON
在查詢分析器裡面這樣寫:
SET IDENTITY_Insert member ON
insert member(id,username) values(1,'admin')
SET IDENTITY_Insert member OFF
在ASP頁面可以這樣寫:
con.execute("SET IDENTITY_Insert member ON" & vbcrlf & "insert member(id,username) values(2,'abcde')" & vbcrlf & "SET IDENTITY_Insert member OFF")
使用該方法應該保證識別欄位沒有插入重複資料,要不然會返回錯誤,插入操作不會進行。SET IDENTITY_Insert [TableName] OFF 其實可以省略,因為會話完畢後,這個開關就自動關上了。