CHECK 檢查限制 (SQL CHECK Constraint)

CHECK 限制用來約束欄位中的可用值,以保證該欄位中的資料值都會符合您設定的條件。

CHECK Constraint

假設我們要限制「customer」資料表中的「C_Id」欄位值都必需要大於「0」:
在建立資料表同時 - CREATE TABLE...
MySQL
CREATE TABLE customer
(
  C_Id INT NOT NULL,
  Name VARCHAR(50) NOT NULL,
  Address VARCHAR(255),
  Phone VARCHAR(20),
  CHECK (C_Id>0)
);
在MySQL增加check限制不會有錯誤,但是沒有用,CHECK並不會被執行喔!

MySQL / SQL Server / Oracle / MS Access
CREATE TABLE customer
(
  C_Id INT NOT NULL CHECK (P_Id>0),
  Name VARCHAR(50) NOT NULL,
  Address VARCHAR(255),
  Phone VARCHAR(20)
);

替檢查限制命名與多欄位的檢查
MySQL / SQL Server / Oracle / MS Access
CREATE TABLE customer
(
  C_Id INT NOT NULL,
  Name VARCHAR(50) NOT NULL,
  Address VARCHAR(255),
  Phone VARCHAR(20),
  CONSTRAINT chk_Customer CHECK (C_Id>0 AND Name!='XXX')
);

更改資料表限制 - ALTER TABLE...
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE customer
ADD CHECK (C_Id>0);

替主鍵命名與多欄位的組合鍵
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE customer
ADD CONSTRAINT chk_Customer CHECK (C_Id>0 AND Name!='XXX');

移除資料表限制 - ALTER TABLE...
SQL Server / Oracle / MS Access
ALTER TABLE customer
DROP CONSTRAINT chk_Customer;