บทช่วยสอนนี้จะอธิบายวิธีสร้าง เพิ่ม และลบข้อจำกัดเฉพาะใน SQL Server
ข้อจำกัดเดียวใน SQL Server คืออะไร
ข้อจำกัดเพียงอย่างเดียวคือฟิลด์หรือการรวมกันของฟิลด์ข้อมูล ซึ่งระบุเร็กคอร์ดได้โดยไม่ซ้ำกัน บางฟิลด์อาจมีค่า NULL ตราบใดที่ค่าผสมไม่ซ้ำกัน
ความแตกต่างระหว่างข้อจำกัดเฉพาะและคีย์หลัก
คีย์หลัก คีย์หลัก ข้อจำกัดที่ไม่ซ้ำ ข้อจำกัดเฉพาะ ไม่มีฟิลด์ในคีย์หลักได้รับอนุญาตให้มีค่า NULL ฟิลด์ที่มีข้อจำกัดเฉพาะบางฟิลด์อาจมีค่า NULL โดยมีเงื่อนไขว่าการรวมกันของค่าต่างๆ จะไม่ซ้ำกันสร้างข้อจำกัดเฉพาะด้วยคำสั่ง CREATE TABLE
CREATE TABLE ten_bang
(
cot1 kieudulieu [ NULL | NOT NULL ];
cot2 kieudulieu [ NULL | NOT NULL ];
…
CONSTRAINT ten_rangbuoc UNIQUE (cot1_rb, cot2_rb, … cot_n_rb)
);
ten_bang
ชื่อของตารางที่คุณต้องการสร้าง
cot1, cot2
คอลัมน์ที่คุณต้องการสร้างในตาราง
ten_rangbuoc
ชื่อของการเชื่อมโยงที่ไม่ซ้ำ
cot1_rb, cot2_rb, . cot_n_rb
คอลัมน์ประกอบขึ้นเป็นข้อจำกัดเฉพาะ
ประเภทข้อมูลใน SQL Server
ตัวอย่างเช่น
CREATE TABLE nhanvien
( id_nhanvien INT PRIMARY KEY,
so_nhanvien INT NOT NULL,
ho VARCHAR(50) NOT NULL,
ten VARCHAR(50),
luong MONEY,
CONSTRAINT nhanvien_duynhat UNIQUE (so_nhanvien)
);
ในตัวอย่างนี้ เราได้สร้างข้อจำกัดเฉพาะชื่อ nhanvien_duynhat บนตารางที่สร้างโดยคำสั่ง CREATE TABLE รวมถึงฟิลด์เดียว so_nhanvien
สามารถสร้างข้อจำกัดเฉพาะที่มีมากกว่า 1 ฟิลด์ดังตัวอย่างด้านล่าง
CREATE TABLE nhanvien
( id_nhanvien INT PRIMARY KEY,
so_nhanvien INT NOT NULL,
ho VARCHAR(50) NOT NULL,
ten VARCHAR(50),
luong MONEY,
CONSTRAINT nhanvien_duynhat UNIQUE (ho, ten)
);
สร้างข้อจำกัดเฉพาะด้วยคำสั่ง ALTER TABLE
ALTER TABLE ten_bang
ADD CON
STRAINT ten_rangbuoc UNIQUE (cot1, cot2, . cot_n);
ten_bang
ชื่อของตารางที่คุณต้องการแก้ไข นี่คือตารางที่คุณต้องการเพิ่มข้อจำกัดเฉพาะ
ten_rangbuoc
ชื่อของข้อจำกัดเฉพาะที่คุณต้องการสร้าง
cot1, cot2 cot_n
คอลัมน์ประกอบขึ้นเป็นข้อจำกัดเฉพาะ
ตัวอย่างเช่น
ALTER TABLE nhanvien
ADD CONSTR
AINT nhanvien_duynhat UNIQUE (so_nhanvien);
ตัวอย่างข้างต้นใช้คำสั่ง ALTER TABLE เพื่อสร้างข้อจำกัดเฉพาะในตารางที่มีอยู่ ซึ่งเรียกว่า nhanvien ซึ่งเรียกว่าฟิลด์ so_nhanvien หากต้องการสร้างข้อจำกัดที่มีมากกว่า 1 ช่อง ดูตัวอย่างด้านล่าง
ALTER TABLE nhanvien
ADD CONSTRAINT ten
_nhanvien_duynhat UNIQUE (cough, ten);
ลบการเชื่อมโยงที่ไม่ซ้ำ
ไวยากรณ์
ALTER TABLE ten_bang
DROP CONSTRAINT
ten_rangbuoc;
ten_bang
ชื่อของตารางที่คุณต้องการแก้ไข นี่คือตารางที่คุณต้องการลบข้อจำกัดเฉพาะ
ten_rangbuoc
ชื่อของข้อจำกัดเฉพาะที่คุณต้องการลบ
ตัวอย่างเช่น
ALTER TABLE nhanvien
DROP CONST
RAINT nhanvien_duynhat;
ตัวอย่างด้านบนลบข้อจำกัดเฉพาะชื่อ nhanvien_duynhat ออกจากตาราง