SQL - 在具有不同列数的多列上创建外键

标签 sql postgresql foreign-keys

我试图在一个表的一列上创建一个外键以指向另一个表的两列,但我似乎遇到了错误。

这可能吗:

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/

相关文章:

mysql - 外键:简单查询不起作用

SQL 服务器 2005 : How to perform a split on a string

postgresql - 从点数组创建 postgres postgis 多边形

postgresql - Golang 在搜索 Postgres 时崩溃

java - 在sqlite的中间表中插入值

python - django.db.utils.IntegrityError : FOREIGN KEY constraint failed

sql - 使用 select 返回多个 id 同时更新多行

SQL简单查询问题

php - 自动增量与唯一键的区别当你把它们都放在一张表中时?

python - 我可以批量递增值以减少数据库写入吗?