2014-10-17 63 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;