2013-05-30 65 views
1

我有一個表'Data'與列'Date'填充基於其他列的值的值的列更改表的SQL

我需要添加另一列稱爲標誌,並用0填充它,如果日期是小於從當前日期算起2年,如果日期比當前日期多2年,則填入1。

我做到了通過使用ALTER TABLE添加列,並使用更新設置聲明如下

alter table data add flag INTEGER constraint flag_value check (flag in(0,1)); 

有沒有辦法做到這一點只用一個ALTER TABLE語句不使用更新設置?

+0

這個規則是否總是成立或僅定義默認值?例如,你可以使'Flag'是一個計算列,其值由'Date'列確定嗎?如果是這樣,我們可能需要知道您正在使用哪種數據庫產品。 –

+0

是的,它是基於日期值計算的,並且可以基於日期值進行默認。我使用SQLite。 – learningnothing

回答

0

有沒有辦法做到這一點只使用一個alter table語句,而不使用更新集?

不在SQLite,它does not support computed columns並沒有辦法通過ALTER TABLE聲明運行默認UPDATE

您可以使用鏈接問題中的視圖方法,也可以像您一樣完成併發出單獨的ALTER TABLEUPDATE語句。