3
我有一個SQL腳本,我正在處理,並且在創建(或編輯)列時遇到問題,然後嘗試修改該新列。SQL Alter Table然後修改值
例如:「無效的列名稱ColumnThree'」
BEGIN
ALTER TABLE SampleTable ADD ColumnThree int
END
IF (EXISTS (SELECT * FROM sys.columns WHERE name = 'ColumnThree'))
BEGIN
UPDATE SampleTable SET ColumnThree = 0
END
現在我還以爲BEGIN/END塊會分離這兩個項目,但我得到一個錯誤當我試圖運行這個。爲什麼?不應該第一個BEGIN/END設置ColumnThree以及更多的IF(如果該列名不存在,EXISTS應該保護UPDATE語句不被運行)
什麼是正確的做某事的方法這樣嗎?(我似乎有幾個類似的場景中,這是需要的)。
INFORMATION_SCHEMA.COLUMNS非常適合檢查列是否存在 – 2009-08-18 13:00:28
@Russ:您將自己的便攜式解決方案留給自己! :) – Eric 2009-08-18 13:04:35
完美,非常感謝......也可以作爲(在事件中有第一個BEGIN/END多個項目): BEGIN \t ALTER TABLE SampleTable ADD ColumnThree詮釋\t END GO IF( EXISTS(SELECT * FROM sys.columns WHERE name ='ColumnThree')) BEGIN \t UPDATE SampleTable SET ColumnThree = 0 END – ChrisHDog 2009-08-18 13:05:04