gpt4 book ai didi

SQL 允许实体仅在满足特定要求时才参与关系

转载 作者:行者123 更新时间:2023-12-02 02:59:03 24 4
gpt4 key购买 nike

我有一个带有 SuperPerson 表和 Disaster 表的练习 Super Hero SQL 数据库。 SuperPerson 和 Disaster 之间有两种关系,Create 和 Prevent。 SuperPerson 表有一个 Disposition 列,告诉我们他们是邪恶的还是善良的。我怎样才能做到只有好的 SuperPerson 才能参与 Prevent 关系,反之亦然才能参与 Create 关系?

我考虑过创建两个引用 SuperPerson 表的新表 SuperHero 和 SuperVillian,这是最合乎逻辑的做法还是有一些 PL/SQL 可用于强制执行此约束?

编辑:Here's a link to a schema of the database so far

最佳答案

理想的做法是将外键定义为:

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);

关于SQL 允许实体仅在满足特定要求时才参与关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47618728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com