【发布时间】:2014-10-17 16:42:58
【问题描述】:
假设我有一个表,其中有 2 个相同类型的列并具有相同的约束 - 它们是 2 个外键。
现在我需要将 column2 的默认值设置为 column1 的当前值。在创建表并且不使用触发器进行插入/更新的情况下是否有可能 - 我的意思是不手动执行?
【问题讨论】:
标签: sqlite default-value
假设我有一个表,其中有 2 个相同类型的列并具有相同的约束 - 它们是 2 个外键。
现在我需要将 column2 的默认值设置为 column1 的当前值。在创建表并且不使用触发器进行插入/更新的情况下是否有可能 - 我的意思是不手动执行?
【问题讨论】:
标签: sqlite default-value
列的默认值必须是常量:
> 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;
【讨论】: