Oracle中 级联删除和更新

在Oracle中使用on delete cascade 可以实现级联删除的操作
代码如下:


--create table a and b
Create Table department (dept_id number (4) Not Null Primary Key, name varchar2 (10), importdate date default sysdate);

Create Table employee (
emp_id number (4) Not Null Primary Key,
dept_id number (4),
name varchar2 (10),
importdate date default sysdate
);

Alter Table employee Add Constraint emp_fk Foreign Key (dept_id) References department(dept_id) on delete cascade;
commit;

级联更新如下:

create table a(
id number not null primary key deferrable,
modifydate date default sysdate
);


create table b(
id number not null primary key,
a_id number
constraint a_id_fk foreign key(a_id) references a(id) on delete cascade
);


create or replace trigger trg_b_a_id
after update of id on a for each row
begin
update b set a_id=:NEW.id where a_id=:OLD.id;
end;

SQL> select * from b;
ID A_ID
---------- ----------
1 1
2 4
3 3


SQL> select * from a;
ID NAME
---------- -------------
1 test_1
4 test_3
3 test_2


SQL> update a set id=5 where id=1;

更新基本表后:
SQL> select * from a;
ID NAME
---------- ------------
5 test_1
4 test_3
3 test_2



SQL> select * from t;
ID A_ID
---------- ----------
1 5
2 4
3 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值