2012-09-18 23 views
6

如何在transact sql中實現這一點。改變表格然後更新

我想添加新的列到現有的表,然後用一些值更新它。是否有可能在一個SQL腳本中完成,或者我應該使用單獨的腳本?

這裏是一個樣本代碼

ALTER TABLE my_table ADD my_new_column bit NULL; 

UPDATE my_table SET my_new_column = 0; 

我知道我做的寫,而列仍然不存在,所以這就是爲什麼這兩條線都沒有工作。但如何在一個腳本中實現這一點,即使用一些延遲或如何確保創建列,然後將數據寫入它?

我用IF EXISTS從表中選擇,但它不起作用。

感謝

回答

14

您可以添加新列,並通過添加默認和使用WITH VALUES條款同時填充它。如果不再需要,您可以在最後刪除默認值。這種方法可以用於多列,如下所示。

ALTER TABLE [myTable] 
ADD [my_new_column] [bit] NULL CONSTRAINT DF_TMP DEFAULT 0 , 
    [my_new_column2] [bit] NULL CONSTRAINT DF_TMP2 DEFAULT 1 WITH VALUES; 

ALTER TABLE [myTable] DROP DF_TMP, DF_TMP2 
+0

如果我想更新幾個不同的值從0,如1更新字段?試過這個查詢它運作良好,但我仍然想使用更新之後。 – Vlad

+2

您可以用同樣的方法添加多個列和默認約束。除此之外,通常最好在與DML不同的批處理中執行DDL以避免解析問題(通過在語句之間添加「GO」或根據需要使用「EXEC」執行此操作) –

+0

哇謝謝建議。是的,DDL應始終與DML分開。在這種情況下,我需要簡單的腳本來完成簡單的任務。無論如何,我用這個答案在這裏與GO語句和它工作,因爲我預期http://stackoverflow.com/questions/1293638/sql-alter-table-then-modify-values – Vlad