【发布时间】:2017-08-26 12:00:51
【问题描述】:
在数据库中,我有一个名为Organization 的基表,大多数表都有外键。假设在 ERD 之下:
如您所见,Organization 表有一个名为 is_enabled 的列。现在如果我想禁用Organization,我应该将is_enabled 设置为1。这很简单,但问题是如果我想阻止所有其他过程和函数使用禁用的Organization,我应该在所有具有对Organization 表的外键引用的表上定义trigger,并且这种方式不好。
是否有另一种方法可以防止所有对象使用禁用的Organizations?
也用于插入或更新数据,例如,如果我有一个带有 org1 标题的Organization,并且如果它有一个带有 dep1 名称的Department,则在我禁用后org1,我无法更新 dep1 名称,并且所有引用 Organization 的表都存在此问题。
【问题讨论】:
-
在这个表中是的,但可能在其他表上存在两个或更多列
-
八个 hundred 表与组织的外键引用似乎很多,这就是我想说的。尤其是只有几列的八百张桌子。 ???
-
我做了一个简单的 ERD 来识别问题,每个表都有自己的列
-
请澄清“使用”的含义。当涉及残疾组织的记录被 a) 更改 b) 查询时会发生什么?
-
不应在触发器中实现诸如“您无权更新已禁用的组织”之类的业务逻辑。更好的解决方案是有一个过程,您可以调用该过程来执行所需的操作,并进行所有需要的一致性检查。祝你好运。
标签: database oracle triggers foreign-keys data-consistency