在Oracle數(shù)據(jù)庫中添加外鍵約束的方法詳解
外鍵指定一個列(或一組列)的值必須符合另一個表的一些行的值。我們說這是維持關(guān)聯(lián)表的參照完整性。
在圖形化界面中,在 外鍵 選項卡,只需簡單地點(diǎn)擊外鍵欄位來編輯。使用外鍵的工具欄,能讓你創(chuàng)建新的、編輯或刪除選擇的外鍵欄位。
添加外鍵:添加一個外鍵到表。
刪除外鍵:刪除已選擇的外鍵。
使用 名 編輯框來輸入新鍵的名。
使用 參考模式、參考表 和 參考限制 下拉列表來分別選擇一個外部索引數(shù)據(jù)庫、表及限制。
要包含欄位到鍵,只需簡單地雙擊 欄位 欄位或點(diǎn)擊 來打開編輯器進(jìn)行編輯。
刪除時 下拉列表定義采取行動的類型。
No Action:這是默認(rèn)的動作。參考鍵值將不會更新或刪除。
CASCADE:分別地刪除任何參考已刪除行的行或更新參考列值為被參考列的新值。
SET NULL:設(shè)置參考列為 null。
啟用
你可以通過勾選或取消勾選框來選擇是否啟用或禁用外鍵限制。
下面來正式看使用SQL語句創(chuàng)建的方法:
1、默認(rèn)的創(chuàng)建方式
在刪除被參照的數(shù)據(jù)時,將無法刪除。
CREATE TABLE T_INVOICE (ID NUMBER(10) NOT NULL, INVOICE_NO VARCHAR2(30) NOT NULL, CONSTRAINT PK_INVOICE_ID PRIMARY KEY(ID)); CREATE TABLE T_INVOICE_DETAIL (ID NUMBER(10) NOT NULL, AMOUNT NUMBER(10,3), PIECE NUMBER(10), INVOICE_ID NUMBER(10), CONSTRAINT PK_DETAIL_ID PRIMARY KEY(ID)); ALTER TABLE T_INVOICE_DETAIL ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID);
2、級聯(lián)刪除
外鍵語法有個選項可以指定級聯(lián)刪除特征。這個特征僅作用于父表的刪除語句。使用這個選項,父表的一個刪除操作將會自動刪除所有相關(guān)的子表記錄
ALTER TABLE T_INVOICE_DETAIL ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID) ON DELETE CASCADE;
如果不能級聯(lián)刪除,可設(shè)置子表外鍵字段值為null,使用on delete set null語句(外鍵字段不能設(shè)置not null約束).
ALTER TABLE T_INVOICE_DETAIL ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID) ON DELETE SET NULL;
三、參照字段語法結(jié)構(gòu)
創(chuàng)建外鍵約束是,外鍵字段參照父表的主鍵或Unique約束字段。這種情況下可以不指定外鍵參照字段名,如下:
ALTER TABLE T_INVOICE_DETAIL ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE;
當(dāng)沒有指定參照字段時,默認(rèn)參照字段是父表的主鍵。
如果外鍵字段參照的是Unique而非Primary Key字段,必須在add constraint語句中指定字段名。
相關(guān)文章
Oracle數(shù)據(jù)庫兩表關(guān)聯(lián)更新的問題
需要寫一個更新語句,但是更新的判斷條件是兩個表關(guān)聯(lián)查詢出來的,本文通過實例代碼給大家講解Oracle數(shù)據(jù)庫兩表關(guān)聯(lián)更新的問題及遇到的坑,感興趣的朋友一起看看吧2023-11-11
oracle使用sql語句增加字段示例(sql刪除字段語句)
oracle使用sql語句增加修改刪除字段示例2013-12-12
plsql 連接oracle數(shù)據(jù)庫詳細(xì)配置的方法步驟
這篇文章主要介紹了plsql 連接oracle數(shù)據(jù)庫詳細(xì)配置的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

