導讀:Oracle數據庫是一種功能性很好的數據庫系統,在數據庫=業界也是占據著重要地位的,相信很多人對oracle數據庫都是比較熟悉的,可是對與在oracle數據庫中用非默認方式創建外鍵大家未必都會,下文就教給大家如何在Oracle數據庫中用非默認方式創建外鍵。
創建外鍵約束時如果使用Oracle默認的創建方式,在刪除被參照的數據時,將無法被刪除,這一點在Oracle9i中給了我們更多靈活的選擇,我們可是使用on delete cascade和 on delete set null關鍵字來決定刪除被參照數據時是否要將參照這個數據的那些數據一並刪除,還是將那些參照這條數據的數據的對應值賦空。
例如下面這兩個表中分別存的時員工的基本信息和公司的部門信息。我們為
create table dept
(deptno number(10) not null,
deptname varchar2(30) not null,
constraint pk_dept primary key(deptno));
和
create table emp
( empno number(10) not null,
fname varchar2(20) ,
lname varchar2(20) ,
dept number(10) ,
constraint pk_emp primary key(empno));
然後我們現在分別使用這兩個關鍵字來增加外鍵試一下,首先我們來試一下on delete cascade
alter table emp
add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete cascade;
先增加外鍵。然後插入數據。
insert into dept values(1,’銷售部’);
insert into dept values(2,’財務部’);
insert into emp values (2,’Mary’,'Song’,1);
insert into emp values (3,’Linda’,'Liu’,2);
insert into emp values (4,’Linlin’,'Zhang’,1);
然後現在我要刪除銷售部,會有什麼後果呢?
delete from dept where deptno = 1;
我們發現除了dept中的一條數據被刪除了,emp中兩條數據也被刪除了,其中emp中的兩條數據是參照了銷售部的這條數據的,這就很容易理解on delete cascade了。
創建外鍵約束時如果使用Oracle默認的創建方式,在刪除被參照的數據時,將無法被刪除,這一點在Oracle9i中給了我們更多靈活的選擇,我們可是使用on delete cascade和 on delete set null關鍵字來決定刪除被參照數據時是否要將參照這個數據的那些數據一並刪除,還是將那些參照這條數據的數據的對應值賦空。
按照上文中介紹的就能夠實現在Oracle數據庫中用非默認方式創建外鍵的目的,希望對大家能夠有所幫助。