CHECK 檢查限制 (SQL CHECK Constraint)

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

假設我們要限制 customer 資料表中的 C_Id 欄位值都必需要大於 0:

在建立資料表同時 CREATE TABLE...

CREATE TABLE customer (
  C_Id INT NOT NULL CHECK (C_Id>0),
  Name VARCHAR(50) NOT NULL,
  Address VARCHAR(255),
  Phone VARCHAR(20)
);

或這樣寫:

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 並不會被執行喔!

替檢查限制命名與多欄位的檢查:

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...

ALTER TABLE customer ADD CHECK (C_Id>0);

替主鍵命名與多欄位的組合鍵:

ALTER TABLE customer
ADD CONSTRAINT chk_Customer CHECK (C_Id>0 AND Name!='XXX');

移除資料表限制 ALTER TABLE...

ALTER TABLE customer DROP CONSTRAINT chk_Customer;