錯誤我們有一個腳本,必須允許被重新運行幾次。SQL腳本運行良好的一個數據庫,在另一
我們有一個MS-SQL腳本,用於在存在(現在已過時)列的情況下更新表,然後刪除該列。爲確保腳本可以多次運行,它在執行更新之前首先檢查是否存在列。
該腳本按照我們的開發數據庫中的預期工作,在第一次運行時更新數據,然後在隨後的運行中顯示消息「不更新」。
在我們的測試數據庫上,腳本在第一次運行時運行正常,但在後續運行中出現「無效列名'OldColumn'」的錯誤;如果我註釋掉UPDATE和ALTER語句,它按預期運行。
即使存在潛在的錯誤,或者是否與數據庫的設置有關,是否有強制腳本運行的方法? (手指交叉,我不看像一個完整的小白!)
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'MyTable' AND COLUMN_NAME = 'OldColumn')
BEGIN
PRINT 'Updating and removing old column...'
UPDATE MyTable SET NewColumn='X' WHERE OldColumn=1;
ALTER TABLE MyTable DROP COLUMN OldColumn;
END
ELSE
PRINT 'Not updating'
GO
它刪除列,你不能弄清楚爲什麼它不更新你丟棄的列? – 2011-03-31 00:10:21
@Randolph - 這根本不是OP的問題。在後續運行中,當列不存在時,代碼不會執行。他們問爲什麼非執行代碼在一個環境中導致編譯問題,而不是另一個環境中。 – 2011-03-31 00:45:38
對,我和你在一起。對困惑感到抱歉。 – 2011-03-31 04:29:08