gpt4 book ai didi

database - 如何在 oracle 11g 中对具有外键引用的另一个表的所有表启用触发器?

转载 作者:搜寻专家 更新时间:2023-10-30 20:50:21 24 4
gpt4 key购买 nike

在数据库中,我有一个名为 Organization 的基表,其中大多数表都有指向该表的外键。假设以下 ERD:

Database ERD

如您所见,Organization 表有一个名为 is_enabled 的列。现在,如果我想禁用 Organization,我应该将 is_enabled 设置为 1。这很简单,但问题是如果我想阻止所有其他过程和函数使用禁用的 Organization,我应该在所有具有的表上定义 trigger Organization 表的外键引用,这种方式很糟糕。

是否有另一种方法可以防止所有对象使用禁用的 Organization?也用于插入或更新数据,例如,如果我有一个标题为 org1Organization,如果它有一个标题为 Department dep1 名称,在我禁用 org1 后,我无法更新 dep1 名称,并且所有引用 Organization< 的表都存在此问题.

最佳答案

如果您想阻止用户更改禁用组织的数据,这应该在您的代码中 - 在存储过程或应用程序代码中。您可以在用户界面中设置一些逻辑或限制,以防止更改已禁用的组织(实际实现取决于您的要求)。

我在评论中遇到的另一个问题(正如 Bob Jarvis 所提到的)是,为什么您有 800 个表带有组织 ID?这似乎没有被标准化。

例如,为什么一个人直接链接到组织表?他们能否链接到部门表,该表有自己的组织链接?

关于database - 如何在 oracle 11g 中对具有外键引用的另一个表的所有表启用触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45895118/

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