如何将父表主键的update级联到子表的外键呢? scott@ORA10G> create table p(pk int primary key); 表已创建。 scott@ORA10G> create table c(fk constraint c_fk 表已创建。 scott@ORA10G> insert into p values(1); 已创建 1 行。 scott@ORA10G> insert into c values(1); 已创建 1 行。 由于设置的是initially immediate,所以update时会报错,因为会马上验证外键约束c_fk: scott@ORA10G> update p set pk=2; 改为deferred后,就可以让外键约束c_fk在提交的时候再去检查,这时就可以进行级联更新的操作了: scott@ORA10G> set constraint c_fk deferred; 约束条件已设置。 scott@ORA10G> update p set pk=2; 已更新 1 行。 scott@ORA10G> update c set fk=2; 已更新 1 行。 scott@ORA10G> set constraint c_fk immediate; 约束条件已设置。 scott@ORA10G> commit; 提交完成。Oracle没有on update cascade
Oracle可以利用约束的deferrable属性:
2 references p(pk)
3 deferrable
4 initially immediate);
update p set pk=2
*
第 1 行出现错误:
ORA-02292: 违反完整约束条件 (SCOTT.C_FK) - 已找到子记录
Oracle没有on update cascade[转自LIVE Di 的文章]
最新推荐文章于 2025-06-29 21:05:28 发布