日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Oracle外鍵與其主鍵的實(shí)際應(yīng)用方案

以下的文章主要是對Oracle主鍵與Oracle外鍵的實(shí)際應(yīng)用方案的介紹,此篇文章是我很然偶在一網(wǎng)站上發(fā)現(xiàn)的,如果你對Oracle主鍵與Oracle外鍵的實(shí)際應(yīng)用很感興趣的話,以下的文章就會給你提供更詳細(xì)的相關(guān)方面的知識。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站建設(shè)、鹽亭網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、鹽亭網(wǎng)絡(luò)營銷、鹽亭企業(yè)策劃、鹽亭品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供鹽亭建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

 
 
 
  1. CREATE TABLE "SCOTT"."MID_A_TAB"  
  2. ( "A" VARCHAR2(20 BYTE),  
  3. "B" VARCHAR2(10 BYTE),  
  4. "DETPNO" VARCHAR2(10 BYTE)  
  5. )TABLESPACE "USERS" ;  
  6. CREATE TABLE "SCOTT"."MID_B_TAB"  
  7. ( "A" VARCHAR2(20 BYTE),  
  8. "B" VARCHAR2(10 BYTE),  
  9. "DEPTNO" VARCHAR2(10 BYTE)  
  10. )TABLESPACE "USERS" ;  

 

給MID_A_TAB表添加主鍵

 

 
 
 
  1. alter table mid_a_tab add constraint a_pk primary key (detpno); 

給MID_B_TAB表添加Oracle主鍵

 

 
 
 
  1. alter table mid_b_tab add constraint b_pk primary key(a); 

給子表MID_B_TAB添加Oracle外鍵,并且引用主表MID_A_TAB的DETPNO列,并通過on delete cascade指定引用行為是級聯(lián)刪除

 

 
 
 
  1. alter table mid_b_tab add constraint b_fk foreign key 
    (deptno) references mid_a_tab (detpno) on delete cascade; 

向這樣就創(chuàng)建了好子表和Oracle主表

向主表添加數(shù)據(jù)記錄

 

 
 
 
  1. SQL> insert into mid_a_tab(a,b,detpno) values('1','1','10'); 

已創(chuàng)建 1 行。

已用時間: 00: 00: 00.00

向子表添加數(shù)據(jù)

 

 
 
 
  1. SQL> insert into mid_b_tab(a,b,deptno) values('1','2','6');  
  2. insert into mid_b_tab values('1','2','6')  
  3. *  

 

第 1 行出現(xiàn)錯誤:

ORA-00001: 違反唯一約束條件 (SCOTT.B_PK)

已用時間: 00: 00: 00.00

可見上面的異常信息,那時因?yàn)樽颖聿迦氲膁eptno的值是6,然而此時我們主表中

detpno列只有一條記錄那就是10,所以當(dāng)子表插入數(shù)據(jù)時,在父表中不能夠找到該引用

列的記錄,所以出現(xiàn)異常。

但我們可以這樣對子表的數(shù)據(jù)的進(jìn)行插入(即:在子表的deptno列插入null,因?yàn)槲覀冊诮ū淼臅r候

并沒有對該列進(jìn)行not null的約束限制):

 

 
 
 
  1. SQL> insert into mid_b_tab(a,b,deptno) values('3','2',null); 

已創(chuàng)建 1 行。

已用時間: 00: 00: 00.00

現(xiàn)在如果我們把子表mid_b_tab中deptno列加上not null約束。

 

 
 
 
  1. SQL> alter table mid_b_tab modify deptno not null;  
  2. alter table mid_b_tab modify deptno not null  
  3. *  

 

第 1 行出現(xiàn)錯誤:

ORA-02296: 無法啟用 (SCOTT.) - 找到空值

已用時間: 00: 00: 00.01

上面又出現(xiàn)異常,這是因?yàn)楝F(xiàn)在mid_b_tab表中有了一條記錄,就是我們先前添加的

那條記錄。

3,2,null

現(xiàn)在我們要把該表的deptno列進(jìn)行not null約束限制,所以O(shè)racle不讓我們這樣干。

那我們就只有把該表給delete或truncate掉,然后在修改deptno列為非空。

 

 
 
 
  1. SQL> delete from mid_b_tab; 

已刪除2行。

已用時間: 00: 00: 00.01

再次修改子表mid_b_tab表的deptno列為非空。

 

 
 
 
  1. SQL> alter table mid_b_tab modify deptno not null; 

表已更改。

已用時間: 00: 00: 00.01

修改成功!

我們再次插入數(shù)據(jù)

 

 
 
 
  1. insert into mid_b_tab(a,b,deptno) values('13','2',null); 

試試。

 

 
 
 
  1. SQL> insert into mid_b_tab(a,b,deptno) values('13','2',null);  
  2. insert into mid_b_tab(a,b,deptno) values('13','2',null)  
  3. *  

 

第 1 行出現(xiàn)錯誤:

ORA-01400: 無法將 NULL 插入 ("SCOTT"."MID_B_TAB"."DEPTNO")

已用時間: 00: 00: 00.00

看見現(xiàn)在Oracle不讓我們插入空值了。

所以我們在創(chuàng)建子表的Oracle外鍵約束時,該表的引用列必須要進(jìn)行not null限制,也可以在

該列創(chuàng)建unique,或primary key約束,并且引用列與被引用列的數(shù)據(jù)類型必須相同。

 

 
 
 
  1. SQL> insert into mid_b_tab(a,b,deptno) values('13','2','10'); 

已創(chuàng)建 1 行。

已用時間: 00: 00: 00.01

此時數(shù)據(jù)插入成功,因?yàn)榇藭r插入的10,在主表中的被引用列中已經(jīng)存在了。

現(xiàn)在我們一系列的操作:

 

 
 
 
  1. SQL> select * from mid_b_tab ;  
  2. A B DE  
  3.     
  4. 13 2 10  

 

已用時間: 00: 00: 00.00

 

 
 
 
  1. SQL> select * from mid_a_tab;  
  2. A B DE  
  3.     
  4. 1 1 10  

 

已用時間: 00: 00: 00.00

 

 
 
 
  1. SQL> delete from mid_a_tab; 

已刪除 1 行。

已用時間: 00: 00: 00.01

【編輯推薦】

  1. Oracle delete數(shù)據(jù)后的釋放表空間問題的解決
  2. Oracle查看和修改其最大的游標(biāo)數(shù)
  3. Oracle使用相關(guān)觸發(fā)器來實(shí)現(xiàn)自增ID
  4. Oracle使用游標(biāo)觸發(fā)器的實(shí)際存儲過程
  5. Oracle數(shù)據(jù)庫索引的優(yōu)點(diǎn)與缺點(diǎn)簡介

網(wǎng)站題目:Oracle外鍵與其主鍵的實(shí)際應(yīng)用方案
分享鏈接:http://www.5511xx.com/article/cocjjss.html