【发布时间】:2014-10-22 14:16:15
【问题描述】:
场景: 实体 1 可以有 0 个或多个实体 2。
尝试做什么: 当实体 1 中的字段更新时,实体 2 中的字段会连续更新。
我在做什么:
通过更新 sql 更新实体 1 中的字段,然后查询相关的实体 2 记录(使用SELECT ATTR FROM ENTITY2 WHERE ENTITY1.ID = ENTITY2.ENT1_ID)只是为了在更新该记录之前获取 ENTITY2 attr 的旧值。 ENTITY2 记录的更新类型(例如减去或添加)基于 ENTITY1 上的更新值。
替代方案: 使用触发器连续更新这些相关记录。
(我仍然计划研究实现触发器,但我不确定是否值得。 请问这有什么帮助吗?还是链接?)
使用触发器更好吗?或者只是坚持我目前的解决方案(由于 sql 执行的数量,我认为这很慢,但更容易追踪)。
【问题讨论】:
-
这取决于您的优先级,尽快更新 entity2 或 跟踪信息。如果要查找基于事件的事务,请选择触发器
-
我个人更喜欢在数据库中使用触发器进行操作。这样,我编写的任何未来代码,或者我必须做的任何手动更新,都会自动获得数据完整性。如果我在代码中执行此操作,我可能会在更新 entity1 时忘记更新 entity2,这样会不好。
标签: sql oracle plsql sql-update triggers