oracle如何在更新父表的同时去更新字表对应的外键值?
oracle外键总只有级联删除没有级联更新。我们的做法是这样的。
通过延迟约束和触发器来实现。
下面这个例子搞懂就OK了。
先创建两个表test_1 和 test_2;
然后给test_1的id字段添加主键约束
给test_2的id字段添加外键约束
我们最开始肯定是创建的这样的外键约束,但是
这样是无法实现级联更新的。
需要让这个约束延迟。但是oracle又没有修改约束的子句,所以只能删除约束,然后重新添加约束。
我对test_2表中的所有约束进行查询
查到这个外键约束的名字是consraint_name
然后我将其删除
然后我添加新的可延迟(deferrable)外键约束
创建触发器
可以对已经创建的触发器进行查询
插入实验数据
插入结果如下:
将test_1表中id为1的全部更新为4
可以看到已经进行了同步的更新。
注意:1.触发器一定要设置对,不要把触发器设在了不该设的表上。