2014-10-17 58 views
2

假設我有一個表,其中有兩列相同類型且具有相同約束的列 - 它們是2個外鍵。設置列的默認值:另一列的值

現在我需要將column2的默認值設置爲等於column1的當前值。這是可能的創建表,並沒有使用觸發器插入/更新 - 我的意思是沒有手動做?

回答

4

列的默認值必須是常量:

> CREATE TABLE t(x, y DEFAULT (x)); 
Error: default value of column [y] is not constant 

這樣的缺省值將需要一個觸發:

CREATE TRIGGER default_y_from_x 
AFTER INSERT ON t 
FOR EACH ROW 
WHEN NEW.y IS NULL 
BEGIN 
    UPDATE t SET y = NEW.x WHERE rowid = NEW.rowid; 
END;