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

CHECK Constraint ใน SQL ใช้เพื่อกำหนดเงื่อนไขสำหรับข้อมูลที่ถูกแทรกลงในตาราง เพื่อให้แน่ใจว่าข้อมูลที่ป้อนเข้าไปตรงตามเงื่อนไขที่กำหนดไว้ หากข้อมูลไม่ผ่านเงื่อนไข ระบบจะไม่อนุญาตให้บันทึกข้อมูลนั้นลงในตาราง

ประเภทของการใช้งาน CHECK Constraint

  1. การใช้กับค่าของคอลัมน์เดียว
    • ใช้เพื่อจำกัดค่าที่สามารถแทรกลงไปในคอลัมน์ใดคอลัมน์หนึ่ง
  2. การใช้กับหลายคอลัมน์
    • ใช้เพื่อกำหนดเงื่อนไขโดยอิงจากค่าของหลายคอลัมน์
  3. การใช้กับค่าช่วง (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
แชร์เรื่องนี้