我有以下腳本:IF NOT EXISTS似乎沒有奏效
BEGIN
IF NOT EXISTS (SELECT SessionID FROM SessionData WHERE SessionID = @SessionID)
BEGIN
SELECT @RegionID = RegionID
FROM Region
WHERE Domain = @Domain
INSERT INTO SessionData (
SessionID,
SystemID,
RegionID,
RegionDomain,
RemoteAddr,
CreatePage)
VALUES (
@SessionID,
@SystemID,
@RegionID,
@RegionDomain,
@RemoteAddr,
@CreatePage)
END
END
偶爾如下網站產生一個錯誤:
PRIMARY KEY約束 'PK_SessionData' 的相關規定。不能在對象的'sbuser.SessionData'中插入 重複鍵。重複鍵 的值爲(1h6l61h069srw1nmw73j)。來源:Microsoft OLE DB提供程序 SQL服務器編號:-2147217873
爲什麼它運行腳本,如果有重複鍵..?我很困惑..任何幫助將不勝感激。
非常感謝..
不知道爲什麼你會得到這個錯誤,但我建議使用「MERGE」語句來完成這項工作,因爲它一次執行檢查/更新。 –
如果使'... WHERE NOT EXISTS(SELECT ...)'部分插入語句而不是條件分支會發生什麼? – Tim
@Tim - [這不會阻止沒有附加鎖定提示的競爭條件](http://stackoverflow.com/q/3407857/73226) –