我有一个使用SuperPerson表和灾难表的练习超级英雄SQL数据库。 SuperPerson和Disaster,Create和Prevent之间有两种关系。 SuperPerson表有一个Disposition列,告诉我们它们是邪恶的还是好的。我怎样才能使得只有一个好的SuperPerson可以参与Prevent关系,反之亦然?#/ p>
我考虑创建两个引用SuperPerson表的新表SuperHero和SuperVillian,这是最合乎逻辑的事情,还是有一些我可以用来强制执行此约束的PL / SQL?
答案 0 :(得分:1)
理想情况是将外键定义为:
add constraint fk_disaster_create
foreign key (create, 'good') references superperson (superpersonid, disposition);
不幸的是,这些引用不允许使用常量。一种方法是使用两个值定义固定列:
alter table disaster add disposition_good varchar2(255) default 'good';
alter table disaster add disposition_evil varchar2(255) default 'evil';
alter table disaster add constraint fk_disaster_create
foreign key (create, 'good') references superperson (superpersonid, disposition);