在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引擎是否可行?或者更一般地说,这应该由应用程序逻辑而不是数据库设计来强制执行吗?