繁体   English   中英

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

[英]How to enable trigger over all tables that has foreign key reference to another table in oracle 11g?

在数据库中,我有一个基本表,名为Organization ,大多数表对此都有外键。 在ERD下面假设:

数据库ERD

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

还有另一种方法可以防止所有对象使用禁用的Organization吗? 还用于插入或更新数据,例如,如果我有一个Organizationorg1Organization ,并且如果它的Department具有dep1的名称,则在禁用org1之后 ,我将无法更新dep1的名称,并且对于所有参考Organization

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

我在评论中还有另一个问题(正如鲍勃·贾维斯(Bob Jarvis)提到的),为什么您有800个带有组织ID的表? 这似乎没有被规范化。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM