ORACLE外鍵約束
- 外鍵約束的定義是,讓另一張表的記錄來約束自己。這里的另一張表就是主表。
- 當主表的記錄刪除時,我們可以跟隨主表刪除記錄(ON DELETE CASCADE)、或者相應字段設置為空(ON DELETE SET NULL)、或者不允許刪除(默認)。
a) 注意一:當主表被級聯刪除(DORP TABEL WEN CASCADE CONSTRAINTS)時,從表建立的與主表關聯的外鍵約束將被刪除,從表數據不會發生變化。
-
- 假設從表為另一個表外鍵約束對應的主表,該外鍵約束關系不會受到影響。
b) 注意二:從表外鍵約束指向的主表字段,必須是唯一性約束或主鍵約束的字段。
-
- 因為,當外鍵約束指向的主表記錄有重復項時,刪除其中之一時,從表伴隨操作不明朗。
創建表時創建外鍵語法:
PRIMARY[ˈpraɪməri] 主要的、關鍵
FOREIGN[ˈfɒrən] 外鍵
REFERENCES[ˈrefrəns]
CONSTRAINT [kənˈstreɪnt]:約束、限制、強制
CREATE TABLE WEN
(
MY CHAR(10) NOT NULL,
LOVE CHAR(8) NOT NULL,
PRIMARY KEY (MY),
CONSTRAINT WEN_FK FOREIGN KEY (MY,LOVE)
REFERENCES GUOGUO(MY,LOVE) ON DELETE CASCADE --當主表記錄刪除時,從表記錄伴隨刪除
)
ON DELETE SET NULL;
當主表記錄刪除時,設置從表數據為NULL,注意,從表字段必須允許為NULL
不寫ON語句時,默認不允許刪除主表記錄。
修改表時追加外鍵:
ALTER TABLE WEN
ADD CONSTRAINT WEN_FK FOREIGN KEY(MY,LOVE) REFERENCES GUOGUO(MY,LOVE) ON DELETE CASCADE
ALTER TABLE GUOGUO ADD CONSTRAINT GUOGUO_FK FOREIGN KEY(MY,LOVE) REFERENCES
WEN(MY,LOVE) ON DELETE SET NULL