ข้อจำกัดการตรวจสอบใน SQL Server คืออะไร มีไว้เพื่ออะไร และใช้ทำอะไร บทความนี้จะให้คำตอบกับคุณ
ข้อจำกัดการตรวจสอบการตรวจสอบใน SQL Server คืออะไร
ข้อจำกัดการตรวจสอบใน SQL Server (Transact-SQL) ช่วยให้สามารถกำหนดเงื่อนไขสำหรับแต่ละแถวในตารางได้
หมายเหตุ
- กำหนดข้อจำกัดการทดสอบในมุมมอง SQL ไม่ได้
- ข้อจำกัดการตรวจสอบในตารางต้องอ้างอิงถึงคอลัมน์ในตารางนั้น ไม่สามารถอ้างอิงคอลัมน์ในตารางอื่นได้
- ตรวจสอบข้อจำกัดไม่สามารถใช้การสืบค้นข้อมูลย่อย
- ข้อจำกัดในการทดสอบสามารถกำหนดได้โดยคำสั่ง CREATE TABLE หรือ ALTER TABLE
สร้างข้อจำกัดการตรวจสอบด้วยคำสั่ง 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)
);
ประเภทข้อมูลใน SQL Server
ten_bang
ชื่อของตารางที่ต้องการสร้างข้อจำกัดในการตรวจสอบ
ten_rangbuoc
ชื่อที่คุณต้องการตั้งค่าสำหรับการตรวจสอบ
ten_cot
คอลัมน์ตารางที่ใช้ข้อจำกัดการตรวจสอบ
เงื่อนไข
ต้องเป็นไปตามเงื่อนไข
ตัวอย่างเช่น
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 จะสร้างข้อจำกัดในการตรวจสอบชื่อ id_nhanvien_kiemtra ในตาราง ข้อจำกัดนี้จะช่วยให้แน่ใจว่าฟิลด์ข้อมูล id_nhanvien มีค่าระหว่าง 1 ถึง 10,000
นี่เป็นอีกตัวอย่างหนึ่ง
CREATE TABLE nhanvien
(id_nhanvien INT NOT NULL,
ho VARCHAR(50) NOT NULL,
ten VARCHAR(50),
luong MONEY,
CONSTRAINT luong_kiemtra
CHECK (luong > 0)
);
ตัวอย่างนี้สร้างข้อจำกัดที่จะตรวจสอบผลรวมเช็คในตาราง เพื่อให้แน่ใจว่าเงินเดือนจะมากกว่าศูนย์
สร้างข้อจำกัดการตรวจสอบด้วยคำสั่ง ALTER TABLE
ไวยากรณ์
ALTERTABLE ten_bang
ADD CONSTAINT ten_rangbuoc
CHECK (d
ieu_kien ten_cot);
ten_bang
ชื่อของตารางต้องการเพิ่มข้อจำกัดในการตรวจสอบ
ten_rangbuoc
ตั้งชื่อไว้สำหรับผูกเช็ค
ten_cot
มีการใช้คอลัมน์ในตารางที่ตรวจสอบข้อจำกัด
เงื่อนไข
เงื่อนไขที่ตรวจสอบข้อจำกัดต้องเป็นไปตาม
ตัวอย่างเช่น
นี่คือตัวอย่างการใช้คำสั่ง ALTER TABLE เพื่อสร้างข้อจำกัดในการตรวจสอบใน SQL Server
ALTER TABLEnhanvien
ADD CONSTRAINT ho_kiemtra
CHECK (ho IN ('S
mith', 'Anderson', 'Jonas'));
ข้อจำกัดการตรวจสอบ ho_kiemtra ถูกสร้างขึ้นในตารางที่มีอยู่ เพื่อให้แน่ใจว่านามสกุลของพนักงานจะมีเฉพาะค่าสำหรับ Smith, Anderson หรือ Jonas
ลบข้อจำกัดการตรวจสอบ
ไวยากรณ์
ALTER TABLE ten_bang
DROP
CONSTRAINT ten_rangbuoc
ten_bang
ชื่อของตารางที่จะลบข้อจำกัดการตรวจสอบ
ten_rangbuoc
ตรวจสอบชื่อการผูกที่ต้องการลบ
ตัวอย่างเช่น
ALTER TABLE nhanvien
DROP
CONSTRAINT ho_kiemtra;
คำสั่งนี้จะลบข้อจำกัด ho_kiemtra บนตาราง
เปิดใช้งานการผูกการตรวจสอบ
ไวยากรณ์
ALTER TABLE ten_bang
WITH CHEC
K CHECK CONSTRAINT ten_rangbuoc;
ten_bang
ชื่อของตารางเพื่อเปิดใช้ข้อจำกัดการตรวจสอบอีกครั้ง
ten_rangbuoc
ต้องเปิดใช้งานชื่อของข้อจำกัดการตรวจสอบ
ตัวอย่างเช่น
ALTER TABLE nhanvien
WITH CHEC
K CHECK CONSTRAINT luong_kiemtra;
ตัวอย่างนี้เปิดใช้งานข้อจำกัดการตรวจสอบอีกครั้งในตารางในตาราง
ปิดใช้งานการผูกการตรวจสอบ
ไวยากรณ์
ALTER TABLE ten_bang
NOCHECK
CONSTRAINT ten_rangbuoc;
ten_bang
ชื่อของตารางเพื่อปิดใช้งานข้อจำกัดการตรวจสอบ
ten_rangbuoc
ต้องการปิดใช้งานชื่อของข้อจำกัดการตรวจสอบ
ตัวอย่างเช่น
ALTER TABLE nhanvien
NOCHECK
CONSTRAINT luong_kiemtra;
ตัวอย่างนี้ปิดใช้งานข้อจำกัดการตรวจสอบใน luong_kiemtra ในตาราง