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

Oracle外鍵與其主鍵的實際應用方案

數據庫 Oracle
下面的文章主要介紹的是Oracle主鍵與Oracle外鍵的實際應用,本文主要是通過相關的應用代碼的方式來引出其實際的操作方案。

以下的文章主要是對Oracle主鍵與Oracle外鍵的實際應用方案的介紹,此篇文章是我很然偶在一網站上發現的,如果你對Oracle主鍵與Oracle外鍵的實際應用很感興趣的話,以下的文章就會給你提供更詳細的相關方面的知識。

  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指定引用行為是級聯刪除

 

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

向這樣就創建了好子表和Oracle主表

向主表添加數據記錄

 

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

已創建 1 行。

已用時間: 00: 00: 00.00

向子表添加數據

 

  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 行出現錯誤:

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

已用時間: 00: 00: 00.00

可見上面的異常信息,那時因為子表插入的deptno的值是6,然而此時我們主表中

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

列的記錄,所以出現異常。

但我們可以這樣對子表的數據的進行插入(即:在子表的deptno列插入null,因為我們在建表的時候

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

 

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

已創建 1 行。

已用時間: 00: 00: 00.00

現在如果我們把子表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 行出現錯誤:

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

已用時間: 00: 00: 00.01

上面又出現異常,這是因為現在mid_b_tab表中有了一條記錄,就是我們先前添加的

那條記錄。

3,2,null

現在我們要把該表的deptno列進行not null約束限制,所以Oracle不讓我們這樣干。

那我們就只有把該表給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

修改成功!

我們再次插入數據

 

  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 行出現錯誤:

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

已用時間: 00: 00: 00.00

看見現在Oracle不讓我們插入空值了。

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

該列創建unique,或primary key約束,并且引用列與被引用列的數據類型必須相同。

 

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

已創建 1 行。

已用時間: 00: 00: 00.01

此時數據插入成功,因為此時插入的10,在主表中的被引用列中已經存在了。

現在我們一系列的操作:

 

  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數據后的釋放表空間問題的解決
  2. Oracle查看和修改其最大的游標數
  3. Oracle使用相關觸發器來實現自增ID
  4. Oracle使用游標觸發器的實際存儲過程
  5. Oracle數據庫索引的優點與缺點簡介
責任編輯:佚名 來源: 互聯網
相關推薦

2010-04-06 16:00:19

Oracle更改表

2010-03-29 15:33:18

Oracle EXP

2010-03-31 17:40:15

Oracle SELE

2010-04-23 15:44:29

Oracle 外鍵

2010-03-30 16:33:55

Oracle數據類型

2010-06-17 17:50:31

SQL Server外

2010-09-02 10:02:06

SQL刪除

2010-04-08 18:33:46

Oracle VARR

2010-03-30 14:32:38

Oracle Date

2010-06-18 08:30:48

SQL Server

2010-06-02 17:31:10

MySQL定時任務

2010-04-09 16:26:53

Oracle join

2010-04-09 13:35:35

Oracle啟動

2010-04-30 17:33:27

Oracle數據集成

2010-04-09 09:28:30

Oracle自增字段

2010-04-29 09:16:16

Oracle密碼過期處

2010-05-04 15:15:39

Oracle分頁查詢

2010-04-21 13:31:11

Oracle時間

2010-04-12 14:44:06

Oracle Impd

2023-09-08 08:44:09

Oracle數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看成年人视频 | 成人欧美一区二区三区在线观看 | 天天玩天天干天天操 | 黄色成人免费看 | 在线观看成人小视频 | 黄色精品 | www.国产| 久久国产精品久久久久久 | 7799精品视频天天看 | 亚洲精品福利视频 | 日韩欧美在线视频 | 中文字幕亚洲区一区二 | 国产一区二区免费 | 一区福利视频 | 午夜精品一区二区三区免费视频 | 欧美aⅴ在线观看 | 亚洲福利一区二区 | 热久久久久| 国内精品久久久久久 | 久久中文一区二区 | 精品久久久999 | 免费人成激情视频在线观看冫 | ww亚洲ww亚在线观看 | 美女视频黄的 | 99精品国产一区二区三区 | 欧美男人亚洲天堂 | 精品一区av | 日韩欧美一区二区三区免费观看 | hsck成人网 | 精品久久影院 | 网站黄色在线免费观看 | 国产中文视频 | 国产精品久久久久久久久久久久冷 | 亚洲一区二区三区四区av | 不卡在线视频 | 午夜视频一区二区三区 | 少妇特黄a一区二区三区88av | 亚洲视频手机在线 | 亚洲一区二区电影网 | 国产做爰 | 国产精品伦理一区二区三区 |