外鍵建立子表與父表的引用完整性。標準建表語法:
CREATE TABLE employees (
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
department_id NUMBER(4),
CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
REFERENCES departments(department_id),
CONSTRAINT emp_email_uk UNIQUE (email)
);
FOREIGN KEY (col):指定子表中的列。REFERENCES parent_table(parent_col):標識父表中的列(必須為主鍵或唯一鍵)。ON DELETE CASCADE:刪除父表行時,級聯刪除子表中匹配的所有行。ON DELETE SET NULL:刪除父表行時,將子表對應外鍵列置為 NULL(前提:子表列允許空值)。| 子句 | 父表刪除行動作 | 適用場景 |
|---|---|---|
| 無(默認) | 若子表有引用行 → 報錯阻止刪除 | 嚴格保護數據完整性 |
| ON DELETE CASCADE | 自動刪除子表引用行 | 主從強綁定,如訂單-明細 |
| ON DELETE SET NULL | 子表外鍵列置 NULL | 弱關聯,如員工-部門(員工可無部門) |