UNIQUE Constraint เป็นข้อจำกัดที่ใช้เพื่อให้มั่นใจว่าค่าที่เก็บอยู่ในคอลัมน์ของฐานข้อมูลจะไม่ซ้ำกัน (unique) ในแต่ละแถว ซึ่งแตกต่างจาก Primary Key ตรงที่สามารถใช้ UNIQUE Constraint กับหลายคอลัมน์ได้ และคอลัมน์ที่มี UNIQUE Constraint สามารถเก็บค่า NULL ได้ (แต่จะเก็บได้แค่ NULL เดียวเท่านั้น)
การใช้งาน UNIQUE Constraint
เราจะสร้างตารางตัวอย่างเพื่อแสดงการประยุกต์ใช้ UNIQUE Constraint ในหลายรูปแบบ ดังนี้
- UNIQUE Constraint บนคอลัมน์เดียว
- UNIQUE Constraint บนหลายคอลัมน์
- การใช้งาน UNIQUE Constraint ร่วมกับ Primary Key
UNIQUE Constraint บนคอลัมน์เดียว
ในตัวอย่างนี้ เราจะสร้างตารางที่เก็บข้อมูลพนักงาน โดยเราต้องการให้ค่าของอีเมลในตารางนี้ไม่ซ้ำกัน
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100) UNIQUE
);คอลัมน์ Email ถูกกำหนด UNIQUE Constraint ซึ่งหมายความว่าทุกค่าของอีเมลในคอลัมน์นี้จะต้องไม่ซ้ำกัน หากมีการพยายามใส่อีเมลที่ซ้ำกัน ระบบจะปฏิเสธและแจ้งข้อผิดพลาด
โครงสร้างของตารางที่ได้จะเป็นดังนี้

แทรกข้อมูลลงในตาราง
INSERT INTO Employees (EmployeeID, FirstName, LastName, Email)
VALUES (1, 'John', 'Doe', '[email protected]');
INSERT INTO Employees (EmployeeID, FirstName, LastName, Email)
VALUES (2, 'Jane', 'Smith', '[email protected]');
-- ลองแทรกข้อมูลที่ซ้ำกันในคอลัมน์ Email
INSERT INTO Employees (EmployeeID, FirstName, LastName, Email)
VALUES (3, 'Alice', 'Johnson', '[email protected]'); -- จะเกิดข้อผิดพลาดเพราะอีเมลซ้ำผลลัพธ์: เมื่อแทรกข้อมูลพนักงานที่มีอีเมลเดียวกัน ระบบจะแจ้งข้อผิดพลาดเพราะค่าของ Email ซ้ำกัน

UNIQUE Constraint บนหลายคอลัมน์
บางครั้งเราต้องการให้ค่าไม่ซ้ำกันโดยใช้คอลัมน์หลายคอลัมน์ร่วมกัน ในตัวอย่างนี้ เราจะสร้างตารางที่เก็บข้อมูลนักศึกษา โดยเราต้องการให้การรวมกันของคอลัมน์ FirstName และ LastName ไม่ซ้ำกัน
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100),
CONSTRAINT UC_StudentName UNIQUE (FirstName, LastName)
);เราใช้ข้อจำกัด UNIQUE กับสองคอลัมน์คือ FirstName และ LastName เพื่อให้แน่ใจว่าไม่มีนักศึกษาสองคนที่มีชื่อและนามสกุลเหมือนกัน (แต่สามารถมีอีเมลเดียวกันได้)
โครงสร้างของตารางที่ได้จะเป็นดังนี้

แทรกข้อมูลลงในตาราง
INSERT INTO Students (StudentID, FirstName, LastName, Email)
VALUES (1, 'Alice', 'Johnson', '[email protected]');
INSERT INTO Students (StudentID, FirstName, LastName, Email)
VALUES (2, 'Bob', 'Smith', '[email protected]');
-- ลองแทรกข้อมูลที่ซ้ำกันในคอลัมน์ FirstName และ LastName
INSERT INTO Students (StudentID, FirstName, LastName, Email)
VALUES (3, 'Alice', 'Johnson', '[email protected]'); -- จะเกิดข้อผิดพลาดเพราะชื่อและนามสกุลซ้ำผลลัพธ์: เมื่อลองแทรกข้อมูลที่มี FirstName และ LastName เหมือนกัน ระบบจะปฏิเสธและแจ้งข้อผิดพลาด

การใช้งาน UNIQUE Constraint ร่วมกับ Primary Key
ในตัวอย่างนี้ เราจะสร้างตารางที่เก็บข้อมูลเกี่ยวกับสินค้า โดยให้ ProductID เป็น Primary Key และกำหนดให้ ProductCode ไม่ซ้ำกันในตาราง
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
ProductName VARCHAR(100),
ProductCode VARCHAR(50) UNIQUE
);ProductID เป็น Primary Key ซึ่งต้องไม่ซ้ำและไม่เป็นค่า NULL ส่วน ProductCode เราใช้ UNIQUE Constraint เพื่อให้มั่นใจว่าสินค้าแต่ละรายการมีรหัสไม่ซ้ำกัน

ทดลองแทรกข้อมูลลงในตาราง
INSERT INTO Products (ProductID, ProductName, ProductCode)
VALUES (1, 'Laptop', 'P001');
INSERT INTO Products (ProductID, ProductName, ProductCode)
VALUES (2, 'Tablet', 'P002');
-- ลองแทรกข้อมูลที่ซ้ำกันในคอลัมน์ ProductCode
INSERT INTO Products (ProductID, ProductName, ProductCode)
VALUES (3, 'Smartphone', 'P001'); -- จะเกิดข้อผิดพลาดเพราะ ProductCode ซ้ำผลลัพธ์: ระบบจะแจ้งข้อผิดพลาดเมื่อพยายามแทรกรหัสสินค้าที่ซ้ำกัน

