成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解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了。

接下來我們再來看on delete set null,顧名思義了,這種方式建立的外鍵約束,當被參照的數據被刪除是,參照該數據的那些數據的對應值將會變為空值,下面我們還是通過試驗來證明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 = 1;

你也會發現除了dept中的銷售部被刪除以外,emp中參照這條數據的兩條數據的dept的值被自動賦空了,這就是on delete set null的作用了。

使用on delete set null有一點需要注意的是,被參參照其他表的那一列必須能夠被賦空,不能有not null約束,對于上面的例子來說是emp中dept列一定不能有not null約束,如果已經定義了not null約束,又使用了on delete set null來刪除被參照的數據時,將會發生:ORA-01407: 無法更新 (”DD”.”EMP”.”DEPT”) 為 NULL的錯誤。

總的來講on delete cascade和on delete set null的作用是用來處理級聯刪除問題的,如果你需要刪除的數據被其他數據所參照,那么你應該決定到底希望oracle怎么處理那些參照這些即將要刪除數據的數據的,你可以有三種方式:
禁止刪除。這也是Oracle默認的

將那些參照本值的數據的對應列賦空,這個需要使用on delete set null關鍵字

將那些參照本值的數據一并刪除,這個需要使用on delete cascade關鍵字

【編輯推薦】

  1. Oracle存儲過程開發實例
  2. 如何用Oracle實現組織結構中的匯總統計
  3. Oracle數據庫中違反***約束的處理
責任編輯:book05 來源: cnblogs
相關推薦

2011-04-11 10:20:53

Oracle

2011-04-14 13:10:23

Oracle

2011-05-12 14:33:37

MySQL外鍵

2010-11-22 09:59:32

MySQL外鍵設置

2010-04-19 12:47:23

Oracle 10g

2010-01-05 09:24:42

MySQL外鍵約束

2011-03-22 12:59:18

SQLOracle外鍵約束

2021-01-28 05:13:17

Oracle索引外鍵

2010-08-19 09:44:04

DB2創建外鍵

2010-04-22 16:26:07

Oracle 10g

2011-07-13 14:02:42

OracleExcel

2010-04-26 16:39:35

Oracle外鍵

2010-04-20 14:06:56

Oracle SQL語

2010-08-09 10:08:15

DB2 創建外鍵

2010-09-28 09:08:40

Oracle

2011-08-30 17:33:10

OracleSAS宏

2019-11-05 08:20:13

MySQL數據庫外鍵

2011-09-01 10:56:34

2009-04-29 16:05:23

Oracle連接輸出SQL

2010-10-19 17:28:08

SQL SERVER外
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色一级免费 | av入口| 99久久久久久久 | 欧美午夜在线 | 免费成人av | 久久国产精品久久 | 99精品视频在线观看免费播放 | 毛片免费观看 | 一级黄色片美国 | 人人爽人人爽人人片av | 亚洲一区二区三区四区五区中文 | 九九av| 综合自拍 | 欧美中文字幕一区二区三区亚洲 | 97人澡人人添人人爽欧美 | 日韩在线精品视频 | 一区二区三区亚洲 | 国产欧美一级二级三级在线视频 | 91大神在线资源观看无广告 | 一级黄色影片在线观看 | 欧美国产免费 | 亚洲欧美日韩系列 | 免费a网站 | 色网在线看 | 精品国产区 | 国产日韩欧美一区二区在线播放 | 亚洲午夜久久久 | 亚洲精品成人 | 成人夜晚看av | 国产精品久久久久久久久大全 | 国产精品大片 | 亚洲一区二区久久 | 一区二区三区中文 | 日本a视频| 华丽的挑战在线观看 | 成人精品国产一区二区4080 | 精品一区国产 | 久久久久国产精品一区二区 | 国产精品日韩欧美一区二区三区 | 欧美成人a| 狠狠狠色丁香婷婷综合久久五月 |