Oracle 添加外鍵

1、默認的創建方式
在刪除被參照的數據時,將無法刪除。
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、級聯刪除
    外鍵語法有個選項可以指定級聯刪除特徵。這個特徵僅作用於父表的刪除語句。使用這個選項,父表的一個刪除操作將會自動刪除所有相關的子表記錄
ALTER TABLE T_INVOICE_DETAIL
ADD CONSTRAINT FK_INVOICE_ID
FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID)
ON DELETE CASCADE;

    如果不能級聯刪除,可設置子表外鍵字段值爲null,使用on delete set null語句(外鍵字段不能設置not null約束).
ALTER TABLE T_INVOICE_DETAIL
ADD CONSTRAINT FK_INVOICE_ID
FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID)
ON DELETE SET NULL;

三、參照字段語法結構
    創建外鍵約束是,外鍵字段參照父表的主鍵或Unique約束字段。這種情況下可以不指定外鍵參照字段名,如下:
ALTER TABLE T_INVOICE_DETAIL
ADD CONSTRAINT FK_INVOICE_ID
FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE;

    當沒有指定參照字段時,默認參照字段是父表的主鍵。
    如果外鍵字段參照的是Unique而非Primary Key字段,必須在add constraint語句中指定字段名。

發佈了98 篇原創文章 · 獲贊 1 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章