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;