关于oracle联级更新的思考

表和表的关系:一对一,一对多,多对多。

思考:

如缴费,或者是别的操作,肯定涉及到状态的改变,比如缴费成功后,用户看到他自己的缴费状态肯定是已缴费,管理员看的那个表也显示他缴费了,字段状态肯定是改变的,但是如何在逻辑判断后,所有涉及到这个功能的表的相关信息都会改变呢?手动添加肯定不行,也太麻烦,还容易错,但是考虑‘如何自动更新数据’的问题,我想了想,涉及到联级更新,不仅仅是字段查询的问题了,考虑用什么样的方法去实现这一点,比如外键,但是外键似乎不太适用于一对多和多张表的关系,又比如单据主从表,生成明细是先生成从表再主表的,而且依赖关系比较复杂,维护起来也不容易,还耗费资源,第二个看了有文章说使用延迟约束和触发器,这个准备试一试
http://www.cnblogs.com/zheng-hong-bo/p/3549933.html

关于:

延迟约束

延迟约束,只在提交的时候进行约束检查
非延迟约束,在修改记录时(对应PL/SQL中的post change按钮 或者DML语句commit前的update)会立刻进行约束条件检查,如果违反越约束条件便不能修改。

通过延迟约束在主表上建立触发器,触发器更新子表的外键,来实现级联更新。
注意:当表的外键引用同一个表的主键时,触发器无法进行级联更新



 

ps:公司里的小姐姐建议把这个写再逻辑里。

猜你喜欢

转载自blog.csdn.net/Kurapika47/article/details/84099076