使用另一个表中的数据设置默认值

时间:2015-04-28 01:26:35

标签: sql sqlite

在SQLite中创建表时,我想使用另一个表中的值来定义列的默认值(因为此列是外键)。像这样:

CREATE TABLE Test_1(A1 INTEGER PRIMARY KEY, B1 TEXT NOT NULL);
CREATE TABLE Test_2(A2 INTEGER PRIMARY KEY, B2 INTEGER NOT NULL DEFAULT [a value in column A1 of Test_1]);

我假设Test_1已经填充了为B2表中的Test_2提供可能值的记录。例如,这些可能是一些常数,例如“已创建'”,“正在进行”,“已暂停”,“已完成”和“已完成”等常量。对于'状态'专栏(即B2)。

我当然可以从Test_1中选择一个值的主键并将其硬编码为B2的默认值,但如果我更改{{1}的数据,那么这很容易出错以后。同时,我们无法在Test_1内使用SELECT语句。

如果在SQLite中不可行,那么其他SQL引擎是否可行?或者更一般地说,这应该由应用程序逻辑而不是数据库设计来强制执行吗?

1 个答案:

答案 0 :(得分:1)

我认为您可以使用TRIGGER

您可以在INSERT上测试B2的值,如果未填充,则可以在A1的{​​{1}}列中选择一个值并填充该列:

Test_1