CHECK เป็นข้อกำหนด (Constraint) ที่ใช้เพื่อจำกัดค่าในคอลัมน์ให้อยู่ในเงื่อนไขที่กำหนดไว้ ใช้ตรวจสอบว่าข้อมูลที่ใส่เข้าไปตรงตามเงื่อนไขหรือไม่ หากข้อมูลไม่ตรงตามเงื่อนไข จะเกิด Error และไม่สามารถบันทึกข้อมูลได้ สามารถใช้ได้ใน MySQL 8.0 หรือใหม่กว่า
รูปแบบการใช้งาน
column_name datatype CHECK (condition)
หรือ
CONSTRAINT constraint_name CHECK (condition)
ตัวอย่างการใช้งาน
จำกัดอายุให้อยู่ระหว่าง 18–60 ปี
SQL
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT CHECK (age BETWEEN 18 AND 60)
);- ถ้าใส่อายุต่ำกว่า 18 หรือมากกว่า 60 จะบันทึกข้อมูลไม่ได้
ใช้ CHECK กับค่าตัวอักษรจำกัดเฉพาะกลุ่ม
SQL
CREATE TABLE accounts (
id INT PRIMARY KEY,
username VARCHAR(50),
role VARCHAR(20) CHECK (role IN ('admin', 'user', 'guest'))
);- ค่าของ
roleต้องเป็น 1 ใน 3 ตัวนี้เท่านั้น
เพิ่ม CHECK ภายหลังด้วย ALTER TABLE
SQL
ALTER TABLE employees
ADD CONSTRAINT chk_age CHECK (age >= 18 AND age <= 60);ข้อควรระวัง
- เงื่อนไขที่ระบุใน
CHECKต้องเป็นเงื่อนไขที่ตรวจสอบค่าในแถวเดียวเท่านั้น (ไม่สามารถใช้JOIN,SELECTได้) - หากมีข้อมูลที่ขัดกับ
CHECKอยู่ก่อน จะเพิ่ม constraint ไม่ได้จนกว่าจะแก้ข้อมูลให้ถูกต้อง CHECKใช้ได้ใน MySQL 8.0 ขึ้นไป