เงื่อนไข CHECK ใน SQL Server คืออะไร ใช้ทำอะไร บทความนี้จะตอบคำถามของคุณ
เงื่อนไข CHECK Constraint ใน SQL Server คืออะไร?
เงื่อนไข CHECK ใน SQL Server (Transact-SQL) อนุญาตให้กำหนดเงื่อนไขสำหรับแต่ละแถวในตาราง
หมายเหตุ
- เงื่อนไข CHECK ไม่สามารถกำหนดใน SQL View ได้
- เงื่อนไข CHECK ในตารางต้องอ้างอิงคอลัมน์ในตารางนั้น ไม่สามารถอ้างอิงคอลัมน์ในตารางอื่นได้
- เงื่อนไข CHECK ไม่สามารถใช้ Subquery (คำสั่งย่อย) ได้
- เงื่อนไข CHECK สามารถกำหนดได้โดยคำสั่ง CREATE TABLE หรือ ALTER TABLE
สร้างเงื่อนไข CHECK ด้วยคำสั่ง CREATE TABLE
ไวยากรณ์
CREATE TABLE ten_bang
(
cot1 kieudulieu [ NULL | NOT NULL ],
cot2 kieudulieu [ NULL | NOT NULL ],
...
CONSTRAINT ten_rangbuoc
CHECK [ NOT FOR REPLICATION ] (dieu_kien ten_cot)
);
ten_bang: ชื่อตารางที่ต้องการสร้างเงื่อนไข CHECK
ten_rangbuoc: ชื่อที่ต้องการตั้งให้กับเงื่อนไข CHECK
ten_cot: คอลัมน์ของตารางที่เงื่อนไข CHECK ใช้
dieu_kien: เงื่อนไขที่ต้องเป็นไปตาม
ตัวอย่าง
CREATE TABLE nhanvien
(id_nhanvien INT NOT NULL,
ho VARCHAR(50) NOT NULL,
ten VARCHAR(50),
luong MONEY,
CONSTRAINT id_nhanvien_kiemtra
CHECK (id_nhanvien BETWEEN 1 AND 10000)
);
ในตัวอย่างนี้ คำสั่ง CREATE TABLE สร้างเงื่อนไข CHECK ชื่อ id_nhanvien_kiemtra ในตาราง เงื่อนไขนี้จะรับรองว่าคอลัมน์ id_nhanvien มีค่าระหว่าง 1 ถึง 10000
ตัวอย่างอีกตัวหนึ่ง:
CREATE TABLE nhanvien
(id_nhanvien INT NOT NULL,
ho VARCHAR(50) NOT NULL,
ten VARCHAR(50),
luong MONEY,
CONSTRAINT luong_kiemtra
CHECK (luong > 0)
);
ตัวอย่างนี้สร้างเงื่อนไขตรวจสอบค่าลงในตาราง รับรองว่าเงินเดือนจะมากกว่าศูนย์
สร้างเงื่อนไข CHECK ด้วยคำสั่ง ALTER TABLE
ไวยากรณ์
ALTER TABLE ten_bang
ADD CONSTRAINT ten_rangbuoc
CHECK (dieu_kien ten_cot);
ten_bang: ชื่อตารางที่ต้องการเพิ่มเงื่อนไข CHECK
ten_rangbuoc: ชื่อที่ตั้งให้กับเงื่อนไข CHECK
ten_cot: คอลัมน์ในตารางที่เงื่อนไข CHECK ใช้
dieu_kien: เงื่อนไขที่เงื่อนไข CHECK ต้องเป็นไปตาม
ตัวอย่าง
นี่คือตัวอย่างการใช้คำสั่ง ALTER TABLE เพื่อสร้างเงื่อนไข CHECK ใน SQL Server
ALTER TABLE nhanvien
ADD CONSTRAINT ho_kiemtra
CHECK (ho IN ('Smith', 'Anderson', 'Jonas'));
เงื่อนไข CHECK ho_kiemtra ถูกสร้างบนตารางที่มีอยู่แล้ว รับรองว่านามสกุลพนักงานจะมีค่าเฉพาะ Smith, Anderson หรือ Jonas เท่านั้น
ลบเงื่อนไข CHECK
ไวยากรณ์
ALTER TABLE ten_bang
DROP CONSTRAINT ten_rangbuoc
ten_bang: ชื่อตารางที่ต้องการลบเงื่อนไข CHECK
ten_rangbuoc: ชื่อเงื่อนไข CHECK ที่ต้องการลบ
ตัวอย่าง
ALTER TABLE nhanvien
DROP CONSTRAINT ho_kiemtra;
คำสั่งนี้จะลบเงื่อนไข ho_kiemtra บนตาราง
เปิดใช้งานเงื่อนไข CHECK
ไวยากรณ์
ALTER TABLE ten_bang
WITH CHECK CHECK CONSTRAINT ten_rangbuoc;
ten_bang: ชื่อตารางที่ต้องการเปิดใช้งานเงื่อนไข CHECK ใหม่
ten_rangbuoc: ชื่อเงื่อนไข CHECK ที่ต้องการเปิดใช้งาน
ตัวอย่าง
ALTER TABLE nhanvien
WITH CHECK CHECK CONSTRAINT luong_kiemtra;
ตัวอย่างนี้เปิดใช้งานเงื่อนไข CHECK luong_kiemtra บนตารางอีกครั้ง
ปิดใช้งานเงื่อนไข CHECK
ไวยากรณ์
ALTER TABLE ten_bang
NOCHECK CONSTRAINT ten_rangbuoc;
ten_bang: ชื่อตารางที่ต้องการปิดใช้งานเงื่อนไข CHECK
ten_rangbuoc: ชื่อเงื่อนไข CHECK ที่ต้องการปิดใช้งาน
ตัวอย่าง
ALTER TABLE nhanvien
NOCHECK CONSTRAINT luong_kiemtra;
ตัวอย่างนี้ปิดใช้งานเงื่อนไข CHECK luong_kiemtra บนตาราง