日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Oracle中非默認(rèn)方式創(chuàng)建外鍵的使用

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

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)加查,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

  例如下面這兩個(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)鍵字來增加外鍵試一下,首先我們來試一下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了。

  接下來我們?cè)賮砜磑n delete set null,顧名思義了,這種方式建立的外鍵約束,當(dāng)被參照的數(shù)據(jù)被刪除是,參照該數(shù)據(jù)的那些數(shù)據(jù)的對(duì)應(yīng)值將會(huì)變?yōu)榭罩担旅嫖覀冞€是通過試驗(yàn)來證明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ì)于上面的例子來說是emp中dept列一定不能有not null約束,如果已經(jīng)定義了not null約束,又使用了on delete set null來刪除被參照的數(shù)據(jù)時(shí),將會(huì)發(fā)生:ORA-01407: 無法更新 (”DD”.”EMP”.”DEPT”) 為 NULL的錯(cuò)誤。

  總的來講on delete cascade和on delete set null的作用是用來處理級(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)鍵字


網(wǎng)頁題目:Oracle中非默認(rèn)方式創(chuàng)建外鍵的使用
分享鏈接:http://www.dlmjj.cn/article/dhipcic.html