如果我們在標識列中插入值,例如:
insertmember(id,username)values(10,'admin')
則在查詢分析器里面會返回錯誤信息:
引用內容
服務器:消息544,級別16,狀態1,行1
當IDENTITY_Insert設置為OFF時,不能向表'member'中的標識列插入顯式值。
而在ASP程序中會返回錯誤信息:
引用內容
MicrosoftOLEDBProviderforSQLServer錯誤'80040e14'
當IDENTITY_Insert設置為OFF時,不能向表'member'中的標識列插入顯式值。
test.asp,行13
但有的情況我們需要手動插入標識列的值,例如刪除了一些記錄后,標識列并不連續,而我們又想把它補齊。我們利用一個開關可以讓愿望變成現實:
SETIDENTITY_Insert[TableName]ON
在查詢分析器里面這樣寫:
SETIDENTITY_InsertmemberON
insertmember(id,username)values(1,'admin')
SETIDENTITY_InsertmemberOFF
在ASP頁面可以這樣寫:
con.execute("SETIDENTITY_InsertmemberON"&vbcrlf&"insertmember(id,username)values(2,'abcde')"&vbcrlf&"SETIDENTITY_InsertmemberOFF")
使用該方法應該保證標識列沒有插入重復數據,要不然會返回錯誤,插入操作不會進行。SETIDENTITY_Insert[TableName]OFF其實可以省略,因為會話完畢后,這個開關就自動關上了。