如果我們?cè)?a href="/news/10885.html">標(biāo)識(shí)列中插入值,例如:
insertmember(id,username)values(10,'admin')
則在查詢分析器里面會(huì)返回錯(cuò)誤信息:
引用內(nèi)容
服務(wù)器:消息544,級(jí)別16,狀態(tài)1,行1
當(dāng)IDENTITY_Insert設(shè)置為OFF時(shí),不能向表'member'中的標(biāo)識(shí)列插入顯式值。
而在ASP程序中會(huì)返回錯(cuò)誤信息:
引用內(nèi)容
MicrosoftOLEDBProviderforSQLServer錯(cuò)誤'80040e14'
當(dāng)IDENTITY_Insert設(shè)置為OFF時(shí),不能向表'member'中的標(biāo)識(shí)列插入顯式值。
test.asp,行13
但有的情況我們需要手動(dòng)插入標(biāo)識(shí)列的值,例如刪除了一些記錄后,標(biāo)識(shí)列并不連續(xù),而我們又想把它補(bǔ)齊。我們利用一個(gè)開(kāi)關(guān)可以讓愿望變成現(xiàn)實(shí):
SETIDENTITY_Insert[TableName]ON
在查詢分析器里面這樣寫(xiě):
SETIDENTITY_InsertmemberON
insertmember(id,username)values(1,'admin')
SETIDENTITY_InsertmemberOFF
在ASP頁(yè)面可以這樣寫(xiě):
con.execute("SETIDENTITY_InsertmemberON"&vbcrlf&"insertmember(id,username)values(2,'abcde')"&vbcrlf&"SETIDENTITY_InsertmemberOFF")
使用該方法應(yīng)該保證標(biāo)識(shí)列沒(méi)有插入重復(fù)數(shù)據(jù),要不然會(huì)返回錯(cuò)誤,插入操作不會(huì)進(jìn)行。SETIDENTITY_Insert[TableName]OFF其實(shí)可以省略,因?yàn)闀?huì)話完畢后,這個(gè)開(kāi)關(guān)就自動(dòng)關(guān)上了。