Oracle SQL约束其他表中相同的值

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (32)

我需要一个简短的答案,当我有表A,B,C,E时,如何约束

  • 表E有E_ID(Eid是主键)
  • 表B有B_ID,E_ID(Eid是外键)
  • 表C有C_ID,E_ID(E id是外键)
  • 表A有A_ID,B_D、C_ID(B和C id是外键)

这里是主键。

我想要约束,以确保我的表A,我有记录,其中C_ID和B_ID有相同的E_身份证。它应该还有第三种形式。

提问于
用户回答回答于

一种方法是重复e_id表中a然后将其用于外键约束。

请注意此数据模型中与唯一键的外键关系:

create table e (eid int primary key);

create table b (bid int primary key, 
                eid int references e(eid),
                unique (bid, eid)
               );

create table c (cid int primary key, 
                eid int references e(eid),
                unique (cid, eid)
               );

create table a (aid int primary key, 
                bid int references b(bid),
                cid int references c(cid),
                eid int references e(eid),
                foreign key (bid, eid) references b(bid, eid),
                foreign key (cid, eid) references c(cid, eid)
               );
用户回答回答于

需要以下四个约束:

alter table a add constraint fk1 foreign key (b_id) references b (b_id);
alter table a add constraint fk2 foreign key (c_id) references c (c_id);
alter table c add constraint fk3 foreign key (e_id) references e (e_id);
alter table b add constraint fk4 foreign key (e_id) references e (e_id);

扫码关注云+社区

领取腾讯云代金券