| 約束 | 用途 | 典型場景 |
|---|---|---|
| CHECK | 自訂布林條件 | 性別只能 M/F、狀態碼範圍 |
| NOT NULL | 欄位必填 | 主鍵欄、業務關鍵欄 |
| UNIQUE | 值唯一 (可多 NULL) | 候選鍵、Email、身分證號 |
| PRIMARY KEY | NOT NULL + UNIQUE | 表主鍵 |
| FOREIGN KEY | 參考完整性 | 明細表關聯主表主鍵 |
約束存放於資料字典,不佔資料空間;可 ENABLE/DISABLE 切換,DROP 移除。
SYSDATE/UID/USER/USERENV。CONSTRAINT chk_name CHECK (condition)。CREATE TABLE policies (
policy_id NUMBER,
gender VARCHAR2(1) CONSTRAINT chk_gender CHECK (gender IN ('M','F')),
marital_status VARCHAR2(1),
CONSTRAINT chk_marital CHECK (marital_status IN ('S','M','D','W'))
);
col_name datatype NOT NULL。ALTER TABLE policies MODIFY holder_name NOT NULL; (語法特殊,非 ADD CONSTRAINT)。CONSTRAINT fk_name FOREIGN KEY (col) REFERENCES parent_table(parent_col) [ON DELETE CASCADE|SET NULL]。-- 停用 ALTER TABLE policies DISABLE CONSTRAINT chk_gender; -- 啟用 (驗證現有資料) ALTER TABLE policies ENABLE CONSTRAINT chk_gender; -- 啟用不驗證 (大量載入後) ALTER TABLE policies ENABLE NOVALIDATE CONSTRAINT chk_gender; -- 刪除 ALTER TABLE policies DROP CONSTRAINT chk_gender;
PK_表名、FK_子表_父表、UK_表名_欄名、CHK_表名_業務意義、NN_表名_欄名。SYS_Cxxxxxx,難以辨識。