CHECK Constraint ใน SQL ใช้เพื่อกำหนดเงื่อนไขสำหรับข้อมูลที่ถูกแทรกลงในตาราง เพื่อให้แน่ใจว่าข้อมูลที่ป้อนเข้าไปตรงตามเงื่อนไขที่กำหนดไว้ หากข้อมูลไม่ผ่านเงื่อนไข ระบบจะไม่อนุญาตให้บันทึกข้อมูลนั้นลงในตาราง
ประเภทของการใช้งาน CHECK Constraint
- การใช้กับค่าของคอลัมน์เดียว
- ใช้เพื่อจำกัดค่าที่สามารถแทรกลงไปในคอลัมน์ใดคอลัมน์หนึ่ง
- การใช้กับหลายคอลัมน์
- ใช้เพื่อกำหนดเงื่อนไขโดยอิงจากค่าของหลายคอลัมน์
- การใช้กับค่าช่วง (Range)
- ใช้เพื่อกำหนดขอบเขตของค่าที่อนุญาตให้แทรกในคอลัมน์
การใช้ CHECK Constraint กับคอลัมน์เดียว
สร้างตาราง Employees ด้วยคำสั่งดังนี้
SQL
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Age INT CHECK (Age >= 18) -- ห้ามมีอายุที่ต่ำกว่า 18 ปี
);ในตัวอย่างนี้ เราสร้างตารางชื่อ Employees ที่มีเงื่อนไขว่า คอลัมน์ Age จะต้องมีค่าไม่น้อยกว่า 18 ปี ถ้าข้อมูลที่แทรกเข้ามาไม่ตรงกับเงื่อนไขนี้ จะไม่สามารถบันทึกข้อมูลได้
แทรกข้อมูลด้วยคำสั่งดังนี้
SQL
INSERT INTO Employees (EmployeeID, FirstName, LastName, Age)
VALUES (1, 'John', 'Doe', 25); -- ข้อมูลถูกต้อง แทรกได้
INSERT INTO Employees (EmployeeID, FirstName, LastName, Age)
VALUES (2, 'Jane', 'Smith', 17); -- ข้อมูลไม่ถูกต้อง เพราะ Age < 18- แถวแรกจะถูกแทรกได้เพราะ
Ageมีค่าเป็น 25 ซึ่งมากกว่า 18 - แถวที่สองจะไม่สามารถแทรกได้เพราะ
Ageมีค่าเป็น 17 ซึ่งไม่ตรงกับเงื่อนไข

การใช้ CHECK Constraint กับหลายคอลัมน์
SQL
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
ProductName VARCHAR(100),
Quantity INT CHECK (Quantity > 0),
Price DECIMAL(10, 2) CHECK (Price > 0),
TotalPrice AS (Quantity * Price) -- คอลัมน์ที่คำนวณโดยไม่ใช้ CHECK
);ในตัวอย่างนี้ ตาราง Orders จะมีเงื่อนไขว่าคอลัมน์ Quantity และ Price จะต้องมีค่ามากกว่า 0
แทรกข้อมูลในตารางด้วยคำสั่งนี้
SQL
INSERT INTO Orders (OrderID, ProductName, Quantity, Price)
VALUES (1, 'Laptop', 2, 1000.00); -- ข้อมูลถูกต้อง แทรกได้
INSERT INTO Orders (OrderID, ProductName, Quantity, Price)
VALUES (2, 'Mouse', 0, 50.00); -- ข้อมูลไม่ถูกต้อง เพราะ Quantity = 0- แถวแรกจะเพิ่มได้เพราะ
QuantityและPriceมีค่ามากกว่า 0 - แถวที่สองจะไม่สามารถเพิ่มได้เพราะ
Quantityมีค่าเป็น 0 ซึ่งไม่ตรงกับเงื่อนไข
การใช้ CHECK Constraint กับช่วงของค่า
SQL
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Grade DECIMAL(3, 2) CHECK (Grade BETWEEN 0 AND 4.00) -- คะแนนต้องอยู่ในช่วง 0 ถึง 4.00
);ในตัวอย่างนี้ ตาราง Students จะมีการจำกัดค่าของคอลัมน์ Grade ให้อยู่ในช่วง 0 ถึง 4.00 เท่านั้น ซึ่งใช้เงื่อนไข BETWEEN
เพิ่มข้อมูลในตารางด้วยคำสั่งนี้
SQL
INSERT INTO Students (StudentID, FirstName, LastName, Grade)
VALUES (1, 'Alice', 'Brown', 3.75); -- ข้อมูลถูกต้อง แทรกได้
INSERT INTO Students (StudentID, FirstName, LastName, Grade)
VALUES (2, 'Bob', 'White', 4.50); -- ข้อมูลไม่ถูกต้อง เพราะ Grade > 4.00- แถวแรกจะเพิ่มได้เพราะ
Gradeอยู่ในช่วงที่กำหนด - แถวที่สองจะไม่สามารถเพิ่มได้เพราะ
Gradeมีค่าเกิน 4.00
สรุป
CHECK Constraintใช้เพื่อกำหนดเงื่อนไขในการเพิ่มข้อมูลลงในคอลัมน์ของตาราง- สามารถประยุกต์ใช้ได้ทั้งกับคอลัมน์เดียว หลายคอลัมน์ หรือค่าแบบ range
