MySQL การใช้งาน CHECK Constraint

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 ขึ้นไป
แชร์เรื่องนี้