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

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

數(shù)據(jù)庫(kù) Oracle
下面的文章主要介紹的是Oracle主鍵與Oracle外鍵的實(shí)際應(yīng)用,本文主要是通過(guò)相關(guān)的應(yīng)用代碼的方式來(lái)引出其實(shí)際的操作方案。

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

  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ù)類型必須相同。

 

  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)介
責(zé)任編輯:佚名 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-04-06 16:00:19

Oracle更改表

2010-03-29 15:33:18

Oracle EXP

2010-03-31 17:40:15

Oracle SELE

2010-03-30 16:33:55

Oracle數(shù)據(jù)類型

2010-04-23 15:44:29

Oracle 外鍵

2010-06-17 17:50:31

SQL Server外

2010-09-02 10:02:06

SQL刪除

2010-03-30 14:32:38

Oracle Date

2010-04-08 18:33:46

Oracle VARR

2010-06-18 08:30:48

SQL Server

2010-06-02 17:31:10

MySQL定時(shí)任務(wù)

2010-04-29 09:16:16

Oracle密碼過(guò)期處

2010-05-04 15:15:39

Oracle分頁(yè)查詢

2010-04-21 13:31:11

Oracle時(shí)間

2010-04-09 09:28:30

Oracle自增字段

2010-04-09 16:26:53

Oracle join

2010-04-09 13:35:35

Oracle啟動(dòng)

2010-04-30 17:33:27

Oracle數(shù)據(jù)集成

2010-04-12 14:44:06

Oracle Impd

2010-04-28 15:04:37

Oracle數(shù)據(jù)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美久久一区二区 | 国产伦精品一区二区三区四区视频 | 精品国产aⅴ | 黄色国产大片 | 久久毛片 | 国产精品视频免费 | 国产高清视频一区二区 | 国产精品揄拍一区二区 | 亚洲手机视频在线 | 午夜精品一区 | 亚洲激情在线观看 | 99久久国产| 久久久区 | 日日夜夜天天 | 欧美日韩在线播放 | 亚洲成人综合社区 | 国产三级精品三级在线观看四季网 | 日本免费一区二区三区 | 亚洲性免费 | 成年网站在线观看 | 久久99国产精一区二区三区 | 亚洲成人网在线观看 | 欧美精品日韩精品国产精品 | 午夜影院网站 | 成年无码av片在线 | 国产精品免费一区二区三区四区 | 91精品一区二区三区久久久久久 | 欧洲色| av黄色免费 | 国产精品日韩欧美 | 亚洲成人一区 | 亚洲欧美综合精品久久成人 | 天天草夜夜骑 | 男人天堂手机在线视频 | 国产一区二区三区四区在线观看 | 久久久久久国产精品久久 | 久久国产一区二区 | 国产成人精品免费视频大全最热 | 综合久久av | 免费成人高清 | 中文字幕在线二区 |