我想寫一個DML腳本,更新一列,但我想,以確保第一列存在,所以我把它包在是否存在阻止UPDATE語句存在阻止
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Client' AND COLUMN_NAME='IsClarityEnabled')
BEGIN
UPDATE Client SET IsClarityEnabled = 1 WHERE ClientID = 21
END
所以奇怪的是它試圖執行更新,即使它失敗的條件。所以列不存在,UPDATE語句運行,我得到一個錯誤。爲什麼?
即使奇怪的是,這樣做的工作:
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Client' AND COLUMN_NAME='IsClarityEnabled')
BEGIN
EXEC('UPDATE Client SET IsClarityEnabled = 1 WHERE ClientID = 21')
END
有什麼特別之處,導致它的行爲這樣一個UPDATE命令?
這個問題是否意味着您使用了清晰度?如果是這樣,我感到你的痛苦。 – HLGEM 2010-04-06 18:24:55
是的,清晰度在這裏被使用。本身並不是那麼糟糕。 – ant 2010-04-06 19:57:29