欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle外鍵約束的三種刪除行為小結(jié)

 更新時(shí)間:2024年08月04日 14:45:15   作者:zxrhhm  
本文主要介紹了Oracle外鍵約束的三種刪除行為小結(jié),分別是默認(rèn)刪除(No Action)、級(jí)聯(lián)刪除(Cascade)和置空刪除(Set Null),下面就來(lái)介紹一下,感興趣的可以了解一下

Oracle外鍵約束的三種刪除行為分別是:默認(rèn)刪除(No Action)、級(jí)聯(lián)刪除(Cascade)和置空刪除(Set Null)。這三種行為定義了當(dāng)主表(父表)中的記錄被刪除時(shí),子表中對(duì)應(yīng)外鍵的處理方式。

1、創(chuàng)建主表及子表并初始化數(shù)據(jù)

1.1、創(chuàng)建主表t_parent,并插入三條記錄

hr@orcl> create table t_parent (parent_id int primary key, name varchar2(10));
hr@orcl> insert into t_parent values (1,'record1');
hr@orcl> insert into t_parent values (2,'record2');
hr@orcl> insert into t_parent values (3,'record3');
hr@orcl> commit;

hr@orcl> select * from T_PARENT;
 PARENT_ID NAME
---------- ------------------------------
         1 record1
         2 record2
         3 record3

1.2、創(chuàng)建字表外鍵約束默認(rèn)刪除no action類型

hr@orcl> create table t_child1 (child1_id int primary key, parent_id int);
hr@orcl> alter table t_child1 add constraint FK_t_child1 foreign key (parent_id) references t_parent (parent_id);
hr@orcl> insert into t_child1 values (1,1);
hr@orcl> commit;

hr@orcl> select * from T_CHILD1;
 CHILD1_ID  PARENT_ID
---------- ----------
         1          1

1.3、創(chuàng)建字表外鍵約束級(jí)聯(lián)刪除(Cascade)

hr@orcl> create table t_child2 (child2_id int primary key, parent_id int);
hr@orcl> alter table t_child2 add constraint FK_t_child2 foreign key (parent_id) references t_parent (parent_id) on delete cascade;
hr@orcl> insert into t_child2 values (2,2);
hr@orcl> commit;

hr@orcl> select * from T_CHILD2;
 CHILD2_ID  PARENT_ID
---------- ----------
         2          2

1.4、創(chuàng)建字表外鍵約束置空刪除(Set Null)

hr@orcl> create table t_child3 (child2_id int primary key, parent_id int);
hr@orcl> alter table t_child3 add constraint FK_t_child3 foreign key (parent_id) references t_parent (parent_id) on delete set null;
hr@orcl> insert into t_child3 values (3,3);
hr@orcl> commit;

hr@orcl> select * from T_CHILD3;
 CHILD2_ID  PARENT_ID
---------- ----------
         3          3

2、三種刪除行為

2.1、默認(rèn)刪除(No Action)

行為描述

  • 當(dāng)在定義外鍵約束時(shí)使用No Action關(guān)鍵字(或者什么都不加,因?yàn)镹o Action是默認(rèn)值),如果嘗試刪除主表中被外鍵引用的記錄,Oracle將阻止這一操作,并返回錯(cuò)誤,因?yàn)檫@將違反外鍵約束的完整性。

示例

如果嘗試刪除主表T_PARENTPARENT_ID為1的記錄,而子表T_CHILD1中存在引用該PARENT_ID的記錄,則刪除操作將失敗,并返回類似ORA-02292: integrity constraint (FK_T_CHILD1) violated - child record found的錯(cuò)誤。

hr@orcl> delete from T_PARENT where parent_id = 1;
delete from T_PARENT where parent_id = 1
*
ERROR at line 1:
ORA-02292: integrity constraint (SEC.FK_T_CHILD1) violated - child record found

hr@orcl> select * from T_CHILD1;
 CHILD1_ID  PARENT_ID
---------- ----------
         1          1
在此類型下,不允許刪除。

2.2、級(jí)聯(lián)刪除(Cascade)

行為描述

  • 當(dāng)在定義外鍵約束時(shí)使用Cascade關(guān)鍵字,如果主表中被引用的記錄被刪除,那么子表中所有引用該記錄的外鍵也將被自動(dòng)刪除。

示例

如果主表T_PARENTPARENT_ID為2的記錄被刪除,并且子表T_CHILD2中存在引用該PARENT_ID的記錄,則這些記錄也將被自動(dòng)刪除,以保持?jǐn)?shù)據(jù)的一致性。

hr@orcl> delete from T_PARENT where parent_id = 2;
1 row deleted.

hr@orcl> select * from T_CHILD2;
no rows selected
成功,級(jí)聯(lián)刪除成功。

2.3、 置空刪除(Set Null)

行為描述

  • 當(dāng)在定義外鍵約束時(shí)使用Set Null關(guān)鍵字,如果主表中被引用的記錄被刪除,那么子表中所有引用該記錄的外鍵將被設(shè)置為NULL。注意,這要求子表中的外鍵列允許NULL值。

示例

如果主表T_PARENTPARENT_ID為3的記錄被刪除,并且子表T_CHILD3中存在引用該PARENT_ID的記錄,則這些記錄中的PARENT_ID將被設(shè)置為NULL。

hr@orcl> delete from T_PARENT where parent_id = 3;
1 row deleted.

hr@orcl> select * from T_CHILD3;
 CHILD2_ID  PARENT_ID
---------- ----------
         3

主表記錄可以完成刪除,子表中對(duì)應(yīng)的內(nèi)容被設(shè)置為NULL。

3、 總結(jié)

以上就是在Oracle數(shù)據(jù)庫(kù),當(dāng)主表信息刪除后對(duì)應(yīng)的子表中記錄的三種不同的處理方式,針對(duì)具體的應(yīng)用場(chǎng)合請(qǐng)選擇合適類型。

Oracle外鍵約束的三種刪除行為為數(shù)據(jù)庫(kù)設(shè)計(jì)提供了靈活性,可以根據(jù)實(shí)際需求選擇合適的行為來(lái)維護(hù)數(shù)據(jù)的完整性和一致性。在實(shí)際應(yīng)用中,應(yīng)根據(jù)數(shù)據(jù)的依賴關(guān)系和業(yè)務(wù)邏輯來(lái)選擇合適的刪除行為。

以上信息基于Oracle數(shù)據(jù)庫(kù)的外鍵約束行為,并參考了相關(guān)的技術(shù)文檔和博客文章。需要注意的是,隨著Oracle數(shù)據(jù)庫(kù)版本的更新,某些細(xì)節(jié)和語(yǔ)法可能會(huì)有所變化,因此建議查閱最新的官方文檔以獲取最準(zhǔn)確的信息。

到此這篇關(guān)于Oracle外鍵約束的三種刪除行為小結(jié)的文章就介紹到這了,更多相關(guān)Oracle外鍵約束刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • oracle 11gR2 win64安裝配置教程另附基本操作

    oracle 11gR2 win64安裝配置教程另附基本操作

    這篇文章主要介紹了oracle 11gR2 win64安裝配置教程,另附數(shù)據(jù)庫(kù)基本操作,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Oracle數(shù)據(jù)庫(kù)復(fù)雜度設(shè)置圖文教程

    Oracle數(shù)據(jù)庫(kù)復(fù)雜度設(shè)置圖文教程

    這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)復(fù)雜度設(shè)置的相關(guān)資料,Oracle可以通過(guò)設(shè)置密碼復(fù)雜度來(lái)提高數(shù)據(jù)庫(kù)的安全性,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Oracle表關(guān)聯(lián)更新幾種方法小結(jié)

    Oracle表關(guān)聯(lián)更新幾種方法小結(jié)

    這篇文章主要介紹了Oracle表關(guān)聯(lián)更新幾種方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • Oracle數(shù)據(jù)庫(kù)sysaux文件損壞的數(shù)據(jù)恢復(fù)案例分享

    Oracle數(shù)據(jù)庫(kù)sysaux文件損壞的數(shù)據(jù)恢復(fù)案例分享

    一臺(tái)Oracle數(shù)據(jù)庫(kù)打開(kāi)報(bào)錯(cuò),報(bào)錯(cuò)信息: “system01.dbf需要更多的恢復(fù)來(lái)保持一致性,數(shù)據(jù)庫(kù)無(wú)法打開(kāi)”,本文給大家介紹了Oracle數(shù)據(jù)庫(kù)sysaux文件損壞的數(shù)據(jù)恢復(fù)案例,需要的朋友可以參考下
    2024-11-11
  • Oracle導(dǎo)出文本文件的三種方法(spool,UTL_FILE,sqluldr2)

    Oracle導(dǎo)出文本文件的三種方法(spool,UTL_FILE,sqluldr2)

    這篇文章主要介紹了Oracle導(dǎo)出文本文件的三種方法(spool,UTL_FILE,sqluldr2),需要的朋友可以參考下
    2023-05-05
  • oracle 的表空間實(shí)例詳解

    oracle 的表空間實(shí)例詳解

    這篇文章主要介紹了oracle 的表空間實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • MSSQL與Oracle數(shù)據(jù)庫(kù)事務(wù)隔離級(jí)別與鎖機(jī)制對(duì)比

    MSSQL與Oracle數(shù)據(jù)庫(kù)事務(wù)隔離級(jí)別與鎖機(jī)制對(duì)比

    事務(wù)隔離級(jí)別是并發(fā)控制的整體解決方案,其實(shí)際上是綜合利用各種類型的鎖和行版本控制,來(lái)解決并發(fā)問(wèn)題。鎖是數(shù)據(jù)庫(kù)并發(fā)控制的內(nèi)部機(jī)制,是基礎(chǔ)。對(duì)用戶來(lái)說(shuō),只有當(dāng)事務(wù)隔離級(jí)別無(wú)法解決一些并發(fā)問(wèn)題和需求時(shí),才有必要在語(yǔ)句中手動(dòng)設(shè)置鎖。
    2014-08-08
  • Oracle連接配置解讀

    Oracle連接配置解讀

    這篇文章主要介紹了Oracle連接配置解讀,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Oracle系統(tǒng)表外鍵的更名

    Oracle系統(tǒng)表外鍵的更名

    Oracle系統(tǒng)表外鍵的更名...
    2007-03-03
  • 通過(guò)Navicat連接Oracle數(shù)據(jù)庫(kù)的詳細(xì)步驟

    通過(guò)Navicat連接Oracle數(shù)據(jù)庫(kù)的詳細(xì)步驟

    本文介紹如何通過(guò)Navicat 連接Oracle數(shù)據(jù)庫(kù),以往總是使用Oracle客戶端來(lái)連接Oracle數(shù)據(jù)庫(kù),但是Oracle客戶端一般有幾百M(fèi)的大小,而且安裝繁瑣配置麻煩,如果可以通過(guò)Navicat直接連接Oracle則會(huì)非常輕松方便,需要的朋友可以參考下
    2023-10-10

最新評(píng)論