我正在研究需要刪除列的數據庫升級腳本(該部分很簡單)。在我可以刪除該列之前,我想要將該值移到另一個已存在的列中。如何在條件爲真的情況下只執行更新命令?
我想acheive idempotence與我的劇本,這是我似乎是失敗的。我有這樣的代碼......
IF EXISTS (SELECT *
FROM sys.all_columns
WHERE sys.all_columns.object_id = OBJECT_ID(N'[dbo].[MyTable]')
AND sys.all_columns.name = 'Column1')
BEGIN
UPDATE [dbo].[MyTable]
SET [Column2] = [Column1]
ALTER TABLE [dbo].[MyTable]
DROP COLUMN [Column1]
END
不管我做什麼,總是執行UPDATE
查詢,即使條件是假的,這會導致錯誤。如果我的初始條件爲false,我需要做什麼來防止運行此查詢?如果條件爲真,它下面的ALTER TABLE
語句纔會運行。
+1我應該在條件更新的第一次和第二次運行之間放置一個批分隔符。 – 2009-08-03 22:13:00