av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Oracle外鍵與其主鍵的實(shí)際應(yīng)用方案

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

成都創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站建設(shè)、鹽亭網(wǎng)絡(luò)推廣、微信小程序定制開(kāi)發(fā)、鹽亭網(wǎng)絡(luò)營(yíng)銷(xiāo)、鹽亭企業(yè)策劃、鹽亭品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪(fǎng)、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供鹽亭建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):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列,并通過(guò)on delete cascade指定引用行為是級(jí)聯(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 行。

已用時(shí)間: 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)錯(cuò)誤:

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

已用時(shí)間: 00: 00: 00.00

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

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

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

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

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

 

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

已創(chuàng)建 1 行。

已用時(shí)間: 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)錯(cuò)誤:

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

已用時(shí)間: 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行。

已用時(shí)間: 00: 00: 00.01

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

 

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

表已更改。

已用時(shí)間: 00: 00: 00.01

修改成功!

我們?cè)俅尾迦霐?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)錯(cuò)誤:

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

已用時(shí)間: 00: 00: 00.00

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

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

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

 

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

已創(chuàng)建 1 行。

已用時(shí)間: 00: 00: 00.01

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

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

 

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

 

已用時(shí)間: 00: 00: 00.00

 

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

 

已用時(shí)間: 00: 00: 00.00

 

 
 
 
  1. SQL> delete from mid_a_tab; 

已刪除 1 行。

已用時(shí)間: 00: 00: 00.01

【編輯推薦】

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

本文題目:Oracle外鍵與其主鍵的實(shí)際應(yīng)用方案
本文路徑:http://uogjgqi.cn/article/cocjjss.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流