創建外鍵約束時如果使用Oracle默認的創建方式
例如下面這兩個表中分別存的時員工的基本信息和公司的部門信息
create table dept
(deptno number(
deptname varchar
constraint pk_dept primary key(deptno));
和
create table emp
( empno number(
fname varchar
lname varchar
dept number(
constraint pk_emp primary key(empno));
然後我們現在分別使用這兩個關鍵字來增加外鍵試一下
alter table emp
add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete cascade;
先增加外鍵
insert into dept values(
insert into dept values(
insert into emp values (
insert into emp values (
insert into emp values (
然後現在我要刪除銷售部
delete from dept where deptno =
我們發現除了dept中的一條數據被刪除了
接下來我們再來看on delete set null
首先恢復剛才的那幾條數據
alter table emp
add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete set null;
然後我們在執行刪除操作
delete from dept where deptno =
你也會發現除了dept中的銷售部被刪除以外
使用on delete set null有一點需要注意的是
總的來講on delete cascade和on delete set null的作用是用來處理級聯刪除問題的
禁止刪除
將那些參照本值的數據的對應列賦空
將那些參照本值的數據一並刪除
From:http://tw.wingwit.com/Article/program/Oracle/201311/18241.html