对t1 中的t1_id, a_id 和t2 中的t2_id, a_id 设置唯一约束。无论如何,这些对都是唯一的,因为 t1_id 或 t2_id 是主键,因此是唯一的。但是需要这样的约束来允许外键引用这样的对。
然后在你的链接表中,我们称之为t1_t2,有t1_id、t2_id和a_id和两个外键t1_id, a_id在t1_id, a_id中引用t1_id, a_id和t2_id, a_id引用@98765433 @在t2。也就是说,a_id 在两个引用记录中必须相同。
要强制三元组 t1_id, t2_id, a_id 唯一,请对它们施加唯一约束,或者将它们声明为主键。
CREATE TABLE a
(a_id integer,
PRIMARY KEY (a_id));
CREATE TABLE t1
(t1_id integer,
a_id integer,
PRIMARY KEY (t1_id),
FOREIGN KEY (a_id)
REFERENCES a
(a_id),
UNIQUE (t1_id,
a_id));
CREATE TABLE t2
(t2_id integer,
a_id integer,
PRIMARY KEY (t2_id),
FOREIGN KEY (a_id)
REFERENCES a
(a_id),
UNIQUE (t2_id,
a_id));
CREATE TABLE t1_t2
(t1_id integer,
t2_id integer,
a_id integer,
PRIMARY KEY (t1_id,
t2_id,
a_id),
FOREIGN KEY (t1_id,
a_id)
REFERENCES t1
(t1_id,
a_id),
FOREIGN KEY (t2_id,
a_id)
REFERENCES t2
(t2_id,
a_id));