如何更新值参考在oracle中找到的子记录

时间:2018-07-05 11:01:30

标签: database oracle

我要更新某人表的数据,但是该表引用了一个孩子记录,发现我正在寻找某个站点6小时,但我找不到解决方案,也从来没有孩子记录,请不要删除它。

2 个答案:

答案 0 :(得分:1)

create table test1(
group_name varchar(20) primary key
);

create table test2(
seq number primary key,
group_name references test1(group_name)
);

commit;


insert into test1 values('test');

commit;


 select * from test1;


 insert into test2 values(1,'test');

 select * from test2;

 create trigger update_cascade
 after update of group_name on test1
 for each row
 BEGIN
    update test2 
    set group_name=:new.group_name
    where group_name=:old.group_name;
 END;
 /

 commit;

  select * from test2;

  update test1 set group_name='best' where group_name='test';

  select * from test1;

  select * from test2;

如果将停止

ALTER TRIGGER MEETNOW.update_cascade disable;
drop trigger update_cascade;
commit;

我希望像我这样的初学者会有所帮助。

答案 1 :(得分:0)

如果您希望在父表上进行的更改级联到子表,则必须在CASCADE或{上将子表上的外键明确告知UPDATE {1}}。像这样:

DELETE