在 Postgres 中,是否可以在如下情况下设置涉及复合类型组件的外键约束?
假设我有
CREATE TABLE main (
-- a and b are separate fields
a INTEGER,
b INTEGER,
PRIMARY KEY (a,b)
);
CREATE TYPE abtype AS (
a INTEGER,
b INTEGER
);
CREATE TABLE sub (
-- a and b are components of a composite type
ab abtype,
PRIMARY KEY (ab)
);
如何设置指定sub.ab
引用的外键约束main.(a,b)
?
以下尝试在语法上都是错误的。
ALTER TABLE sub ADD CONSTRAINT sub_ab_fkey FOREIGN KEY
... (ab) REFERENCES main(a,b);
... (ab) REFERENCES main((a,b));
... (ab) REFERENCES main((a,b)::abtype);
... (ab) REFERENCES main(a,b)::abtype;
... ((ab).a,(ab).b) REFERENCES main(a,b);
... (ab.a,ab.b) REFERENCES main(a,b);
正如我在评论中指出的那样,您可以在表中添加一个新的复合列
main
:并设置唯一索引:
现在您可以将您的 FK 引用到此列:
db<>在这里摆弄