假设我们有这些表:
CREATE TABLE A (
id SERIAL NOT NULL PRIMARY KEY
);
CREATE TABLE B (
id SERIAL NOT NULL PRIMARY KEY
);
CREATE TABLE Parent (
id SERIAL NOT NULL PRIMARY KEY,
aId INTEGER NOT NULL REFERENCES A (id),
bId INTEGER NOT NULL REFERENCES B (id),
UNIQUE(aId, bId)
);
CREATE TABLE Child (
parentId INTEGER NOT NULL REFERENCES Parent (id),
createdOn TIMESTAMP NOT NULL
);
是否可以创建一个唯一约束,以使最多一个引用Child
中的所有行都具有某个值?换一种说法,我可以创建一个唯一约束,以便上述表的连接没有重复吗?我不认为——我能找到的每个数据库的语法似乎都与每个约束绑定到一个表——但这可能是我缺乏想象力。(当然,反规范化以包含在其中是一种解决方案。)Child
Parent
aId
aId
aId
Child