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

Oracle中非默認(rèn)方式創(chuàng)建外鍵的使用

數(shù)據(jù)庫(kù) Oracle
創(chuàng)建外鍵約束時(shí)如果使用Oracle默認(rèn)的創(chuàng)建方式,在刪除被參照的數(shù)據(jù)時(shí),將無(wú)法被刪除,這一點(diǎn)在Oracle9i中給了我們更多靈活的選擇,我們可是使用on delete cascade和 on delete set null關(guān)鍵字來(lái)決定刪除被參照數(shù)據(jù)時(shí)是否要將參照這個(gè)數(shù)據(jù)的那些數(shù)據(jù)一并刪除,還是將那些參照這條數(shù)據(jù)的數(shù)據(jù)的對(duì)應(yīng)值賦空。

本文中主要為大家介紹Oracle中非默認(rèn)方式創(chuàng)建外鍵的使用,這種非默認(rèn)方式要比Oracle默認(rèn)的創(chuàng)建方式好很多,可以解決Oracle默認(rèn)的創(chuàng)建方式的很多不便之處,希望下文中涉及到的內(nèi)容對(duì)大家能夠有所幫助。

  例如下面這兩個(gè)表中分別存的時(shí)員工的基本信息和公司的部門信息。我們?yōu)?/p>

  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));

  然后我們現(xiàn)在分別使用這兩個(gè)關(guān)鍵字來(lái)增加外鍵試一下,首先我們來(lái)試一下on delete cascade

  alter table emp

  add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete cascade;

  先增加外鍵。然后插入數(shù)據(jù)。

  insert into dept values(1,’銷售部’);

  insert into dept values(2,’財(cái)務(wù)部’);

  insert into emp values (2,’Mary’,'Song’,1);

  insert into emp values (3,’Linda’,'Liu’,2);

  insert into emp values (4,’Linlin’,'Zhang’,1);

  然后現(xiàn)在我要?jiǎng)h除銷售部,會(huì)有什么后果呢?

  delete from dept where deptno = 1;

  我們發(fā)現(xiàn)除了dept中的一條數(shù)據(jù)被刪除了,emp中兩條數(shù)據(jù)也被刪除了,其中emp中的兩條數(shù)據(jù)是參照了銷售部的這條數(shù)據(jù)的,這就很容易理解on delete cascade了。

  接下來(lái)我們?cè)賮?lái)看on delete set null,顧名思義了,這種方式建立的外鍵約束,當(dāng)被參照的數(shù)據(jù)被刪除是,參照該數(shù)據(jù)的那些數(shù)據(jù)的對(duì)應(yīng)值將會(huì)變?yōu)榭罩担旅嫖覀冞€是通過(guò)試驗(yàn)來(lái)證明on delete set null作用:

  首先恢復(fù)剛才的那幾條數(shù)據(jù),然后更改約束:

  alter table emp

  add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete set null;

  然后我們?cè)趫?zhí)行刪除操作:

  delete from dept where deptno = 1;

  你也會(huì)發(fā)現(xiàn)除了dept中的銷售部被刪除以外,emp中參照這條數(shù)據(jù)的兩條數(shù)據(jù)的dept的值被自動(dòng)賦空了,這就是on delete set null的作用了。

  使用on delete set null有一點(diǎn)需要注意的是,被參參照其他表的那一列必須能夠被賦空,不能有not null約束,對(duì)于上面的例子來(lái)說(shuō)是emp中dept列一定不能有not null約束,如果已經(jīng)定義了not null約束,又使用了on delete set null來(lái)刪除被參照的數(shù)據(jù)時(shí),將會(huì)發(fā)生:ORA-01407: 無(wú)法更新 (”DD”.”EMP”.”DEPT”) 為 NULL的錯(cuò)誤。

  總的來(lái)講on delete cascade和on delete set null的作用是用來(lái)處理級(jí)聯(lián)刪除問題的,如果你需要?jiǎng)h除的數(shù)據(jù)被其他數(shù)據(jù)所參照,那么你應(yīng)該決定到底希望oracle怎么處理那些參照這些即將要?jiǎng)h除數(shù)據(jù)的數(shù)據(jù)的,你可以有三種方式:

  禁止刪除。這也是Oracle默認(rèn)的

  將那些參照本值的數(shù)據(jù)的對(duì)應(yīng)列賦空,這個(gè)需要使用on delete set null關(guān)鍵字

  將那些參照本值的數(shù)據(jù)一并刪除,這個(gè)需要使用on delete cascade關(guān)鍵字

【編輯推薦】

  1. Oracle數(shù)據(jù)庫(kù)應(yīng)遵循的PL/SQL編碼規(guī)則
  2. 在Oracle數(shù)據(jù)庫(kù)維護(hù)中要做到前瞻性
  3. Oracle臨時(shí)表的創(chuàng)建
  4. 如何完全刪除Oracle數(shù)據(jù)庫(kù)
責(zé)任編輯:迎迎 來(lái)源: 中國(guó)IT實(shí)驗(yàn)室
相關(guān)推薦

2011-04-11 10:20:53

Oracle

2009-03-26 09:24:36

Oracle外鍵數(shù)據(jù)庫(kù)

2010-04-26 16:39:35

Oracle外鍵

2010-04-23 15:44:29

Oracle 外鍵

2010-10-19 17:28:08

SQL SERVER外

2011-03-22 12:59:18

SQLOracle外鍵約束

2021-01-28 05:13:17

Oracle索引外鍵

2010-10-09 09:46:28

MySQL外鍵

2010-06-17 17:50:31

SQL Server外

2010-11-24 14:12:18

MySQL創(chuàng)建有外鍵的

2010-10-09 09:55:41

MySQL外鍵

2010-10-09 10:04:48

MySQL定義外鍵

2010-08-20 08:37:59

DB2創(chuàng)建外鍵

2010-04-21 13:43:31

Oracle聚簇索引

2010-11-22 09:43:07

MySQL定義外鍵

2011-03-23 11:22:14

oracle dbli

2010-08-09 10:08:15

DB2 創(chuàng)建外鍵

2010-08-19 09:44:04

DB2創(chuàng)建外鍵

2010-05-11 18:46:46

MYSQL 外鍵

2010-09-13 13:44:22

sql server外
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久99精品久久久久久琪琪 | 国产免费一二三区 | 欧美精品一区二区三区蜜桃视频 | av在线播放网址 | 久久久久久黄 | 久久久久国产一区二区三区 | 一区二区三区视频免费观看 | 日韩视频中文字幕 | 久久精品久久综合 | 五月香婷婷| 91精品久久久久久久久 | 高清黄色| 欧美二区在线 | 久草视频2 | 亚洲精品中文字幕在线 | 国产激情一区二区三区 | 狠狠操狠狠干 | 91精品久久久久久综合五月天 | 高清国产一区二区 | 久久精品久久综合 | 久久精品一级 | 欧美日韩在线免费 | 国产成人一区二区三区 | 亚洲成人一区二区 | 亚洲精品久久久久中文字幕二区 | 久久久免费观看视频 | 波波电影院一区二区三区 | 丝袜毛片| 91在线视频一区 | 人人种亚洲 | 久久综合狠狠综合久久综合88 | 欧美一区二区网站 | 亚洲一区二区三区在线视频 | 91亚洲国产亚洲国产 | 在线观看免费毛片 | 久久九| 国产精品久久久久久一区二区三区 | 亚洲免费影院 | japan25hdxxxx日本 做a的各种视频 | 成人在线中文字幕 | av国产在线观看 |