Oracle 外鍵
外鍵用于與另一張表的關聯。是能確定另一張表記錄的字段,用于保持數據的一致性。
Oracle 外鍵創建
在Oracle數據庫中,外鍵是強制實施參照完整性的一種方式,使用外鍵就意味著一個表中的值在另一個表中也必須出現。 被引用的表稱為父表,而帶有外鍵的表稱為子表。子表中的外鍵通常會引用父表中的主鍵。
1、使用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) );
示例:
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) ); 在這個例子中,我們在supplier表上創建了一個名為supplier_pk的主鍵。 它只包含一個字段 - supplier_id字段。 然后,在products表上創建了一個名為fk_supplier的外鍵,該表根據supplier_id字段引用supplier表。 也可以創建一個具有多個字段的外鍵,如下例所示: 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) ); 在這個例子中,外鍵稱為fk_foreign_comp基于兩個字段 - supplier_id和supplier_name字段引用供應商表。
2、使用ALTER TABLE語句創建
在ALTER TABLE語句中創建外鍵的語法是: ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column1, column2, ... column_n) REFERENCES parent_table (column1, column2, ... column_n); 示例: ALTER TABLE products ADD CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id); 在這個例子中,我們創建了一個名為fk_supplier的外鍵,它根據supplier_id字段引用supplier表的supplier_id字段。 我們也可以創建一個具有多個字段的外鍵,如下例所示: ALTER TABLE products ADD CONSTRAINT fk_supplier FOREIGN KEY (supplier_id, supplier_name) REFERENCES supplier(supplier_id, supplier_name);
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中,如何去刪除自己創建的外鍵呢?本教程就為大家介紹Oracle中刪除外鍵的方法。 在Oracle中,我們可以使用ALTER TABLE語句來對外鍵進行刪除。
語法
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
示例
我們先使用下方的代碼創建一個外鍵: 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) ); 通過以上代碼,我們在supplier表上創建了一個名為supplier_pk的主鍵。然后再在products表上創建了一個名為fk_supplier的外鍵。 如果我們想要刪除這個新創建的外鍵,我們可以執行以下的代碼: ALTER TABLE products DROP CONSTRAINT fk_supplier; 這樣,我們就成功的刪除了這個新建的fk_supplier外鍵。
Oracle 怎么禁用外鍵
我們創建外鍵后,可能有時會遇到要禁用外鍵的情況,那么在Oracle中,我們如何對外鍵進行禁用呢?
語法
在Oracle中,我們要禁用外鍵可以使用以下語法: ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;
示例:
我們先通過以下代碼創建一個名為fk_supplier的外鍵: 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) 在這個例子中,在supplier表上創建了一個名為supplier_pk的主鍵。 它只包含一個字段 - supplier_id字段。 然后,我們在products表上創建了一個名為fk_supplier的外鍵,products表的supplier_id字段引用supplier表的supplier_id字段。 如果想禁用這個外鍵,可以執行以下命令: ALTER TABLE products DISABLE CONSTRAINT fk_supplier;
Oracle 啟用外鍵
在Oracle中,面對已經被禁用的外鍵,我們該如何將它重新啟用呢?本教程就為大家帶來Oracle外鍵啟用方法。
外鍵啟用語法
ALTER TABLE table_name ENABLE CONSTRAINT constraint_name; 示例: 我們可以先創建一個名為fk_supplier的外鍵, 然后對這個外鍵進行禁用, 現在,我們將重新啟用這個被禁用的fk_supplier外鍵,可以執行以下命令: ALTER TABLE products ENABLE CONSTRAINT fk_supplier; 這樣,原先被禁用的外鏈就被重新啟用了,非常簡單。
總結
以上是生活随笔為你收集整理的Oracle 外键的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。