我试图在一个表的一列上创建一个外键以指向另一个表的两列,但我似乎遇到了错误。
这可能吗:
ALTER TABLE table_a add CONSTRAINT table_a_table_b FOREIGN KEY
(table_a.id,false) REFERENCES table_b(table_b.id,some_boolean);
不应该允许 table_a 引用 table_b 中的实体,其中“some_boolean”为真。
最佳答案
一种方法是将虚拟列 some_bool
添加到 table_a
,默认值为 false
,然后使您的 FK 约束同时引用列:
create table table_a ( id varchar, some_bool bool default false);
create table table_b ( id varchar, some_bool bool);
alter table table_b add constraint table_b_unique unique( id, some_bool);
ALTER TABLE table_a add CONSTRAINT table_a_table_b
FOREIGN KEY (id,some_bool)
REFERENCES table_b(id,some_bool);
关于SQL - 在具有不同列数的多列上创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39337278/