首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 完整性約束基礎:Check、NOT NULL 與約束管理

     編輯:Oracle 資料庫基礎

五大完整性約束

Oracle 提供:CHECK、NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY。約束為規則,不佔儲存空間,存在資料字典,SQL/PL/SQL 執行時驗證。可指定啟用/停用,停用時仍存在字典。

Check 約束

單列布林條件,至少一欄為 NULL 即通過。用於簡單商業規則。可跨同列欄位,不可跨列、不可呼叫 SYSDATE/UID/USER/USERENV。不支援 LOB/物件/巢狀表/VARRAY/REF。單欄可多 Check;一 Check 可護多欄。

CREATE TABLE POLICIES(
  POLICY_ID NUMBER,
  HOLDER_NAME VARCHAR2(40),
  GENDER VARCHAR2(1) CONSTRAINT CHK_GENDER CHECK (GENDER IN ('M','F')),
  MARITAL_STATUS VARCHAR2(1),
  DATE_OF_BIRTH DATE,
  CONSTRAINT CHK_MARITAL CHECK (MARITAL_STATUS IN ('S','M','D','W'))
);

NOT NULL 約束

單欄強制非空。預設允許 NULL。商業規則要求必填欄位必加此約束。

CREATE TABLE POLICIES(
  POLICY_ID NUMBER,
  HOLDER_NAME VARCHAR2(40) NOT NULL,
  GENDER VARCHAR2(1),
  MARITAL_STATUS VARCHAR2(1),
  DATE_OF_BIRTH DATE NOT NULL
);

修改既有欄位:

ALTER TABLE POLICIES MODIFY HOLDER_NAME NOT NULL;

約束狀態控制

-- 停用
ALTER TABLE TABLE_NAME DISABLE CONSTRAINT CONSTRAINT_NAME;
-- 啟用
ALTER TABLE TABLE_NAME ENABLE CONSTRAINT CONSTRAINT_NAME;
-- 刪除
ALTER TABLE TABLE_NAME DROP CONSTRAINT CONSTRAINT_NAME;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved