在创建SQLite中的表时,我想使用另一张表中的值来定义列的默认值(因为该列是外键)。类似于这样的语句:
我假设
当然,我可以选择从
如果SQLite中不可行,其他SQL引擎是否可以实现?或者更一般地说,这是否应该由应用程序逻辑而不是数据库设计来强制执行?
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
表中已经填充了提供Test_2
表中B2
可能值的记录。例如,这些可能是一些常量,如“Created”,“In Progress”,“Paused”,“Finished”用于“Status”列(即B2
)。当然,我可以选择从
Test_1
中选择一个值的主键,并将其硬编码为B2
的默认值,但如果稍后更改Test_1
的数据,则容易出错。同时,我们不能在CREATE
语句中使用SELECT
语句。如果SQLite中不可行,其他SQL引擎是否可以实现?或者更一般地说,这是否应该由应用程序逻辑而不是数据库设计来强制执行?
Test_1
中的记录已经存在,例如它们可能是Test_2
表中某个列/字段的一些常量。我只想使用在Test_1
中定义的其中一个常量作为Test_2
表中相应列的默认值。 - MLister