Oracle 級聯刪除外鍵
Oracle 級聯刪除外鍵
所謂的級聯刪除是指當主表中的一條記錄被刪除,那么子表中所關聯的記錄也相應的自動刪除。本教程將教大家如何在Oracle中使用級聯刪除外鍵。
使用CREATE TABLE語句定義級聯刪除
以下是使用CREATE TABLE語句定義級聯刪除的語法:
CREATE TABLE table_name ( column1 datatype null/not null, column2 datatype null/not null, ... CONSTRAINT fk_column FOREIGN KEY (column1, column2, ... column_n) REFERENCES parent_table (column1, column2, ... column_n) ON DELETE CASCADE );
示例:
CREATE TABLE supplier ( supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_pk PRIMARY KEY (supplier_id) ); CREATE TABLE products ( product_id numeric(10) not null, supplier_id numeric(10) not null, CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id) ON DELETE CASCADE );
以上示例中,我們在supplier表創建了一個名為supplier_pk的主鍵,這個主鍵只包含supplier_id字段。
然后在products表上創建了一個名為fk_supplier的外鍵,該表根據supplier_id字段引用supplier表的supplier_pk字段。
由于級聯刪除,當supplier表中的記錄被刪除時,products表中相應的所有記錄也將被刪除,因為這些記錄具有相同的supplier_id值。
此外,我們也可以創建一個具有多個字段的外鍵(帶級聯刪除),如下例所示:
CREATE TABLE supplier ( supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name) ); CREATE TABLE products ( product_id numeric(10) not null, supplier_id numeric(10) not null, supplier_name varchar2(50) not null, CONSTRAINT fk_supplier_comp FOREIGN KEY (supplier_id, supplier_name) REFERENCES supplier(supplier_id, supplier_name) ON DELETE CASCADE );
在這個例子中,fk_foreign_comp外鍵基于兩個字段:supplier_id和supplier_name字段引用supplier表。
根據supplier_id和supplier_name刪除supplier表中的記錄時,外鍵fk_foreign_comp上的級聯刪除會導致products表中的所有對應記錄也會被級聯刪除。
使用ALTER TABLE語句定義級聯刪除
除了CREATE TABLE語句外,我們還可以用ALTER TABLE語句定義級聯刪除,具體語法如下:
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column1, column2, ... column_n) REFERENCES parent_table (column1, column2, ... column_n) ON DELETE CASCADE;
示例:
ALTER TABLE products ADD CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id) ON DELETE CASCADE;
在本例中,我們創建了一個名為fk_supplier的外鍵(帶級聯刪除),該外鍵基于supplier_id字段引用supplier表。
此外,我們也可以創建一個具有多個字段的外鍵(帶級聯刪除),如下例所示:
ALTER TABLE products ADD CONSTRAINT fk_supplier FOREIGN KEY (supplier_id, supplier_name) REFERENCES supplier(supplier_id, supplier_name) ON DELETE CASCADE;
相關文章
- Oracle簡介
- Oracle 12C安裝教程
- Oracle Between子句
- Oracle 怎么禁用外鍵
- Oracle Ascii()函數
- Oracle Chr()函數
- Memcached 教程
- Memcached set 命令
- Memcached append 命令
- Memcached get 命令
- Java 連接 Memcached 服務
- DB2約束
- DB2備份和恢復
- DB2數據庫安全
- oracle中對JSON數據處理的詳細指南
- 一文詳解Oracle存儲過程
- Oracle中時間日期轉化函數to_date和to_char的具體使用
- PLSQL一些常用知識點梳理總結
- 關于oracle邏輯備份exp導出指定表名時需要加括號的問題解析
- Oracle?19c創建數據庫的完整步驟(詳細明了)