05.2 Các ràng buộc SQL-UNIQUE

Ràng buộc UNIQUE Dùng để xác định tính duy nhất của mỗi bản ghi trong một bảng cơ sở dữ liệu

Cả hai ràng buộc UNIQUE và PRIMARY KEY (khóa chính) đều đảm bảo sự duy nhất của của một cột hay một tập hợp các cột trong bảng dữ liệu.

Bản thân một ràng buộc PRIMARY KEY đã có chứa ràng buộc UNIQUE trong nó. Tức là ràng buộc UNIQUE luôn luôn được định nghĩa bên trong ràng buộc PRIMARY KEY.

Có thể bạn sẽ thấy sự khó khăn trong việc phân biệt sự khác nhau giữa ràng buộc UNIQUE và ràng buộc PRIMARY KEY. Vậy sự khác nhau giữa UNIQUE và PRIMARY KEY là:

  • Trong một bảng chỉ có duy nhất một PRIMARY KEY

  • Một bảng có thể có nhiều ràng buộc UNIQUE (bởi vì ràng buộc UNIQUE là đảm bảo sự duy nhất của mỗi bản ghi, không phải đảm bảo sự duy nhất của bảng)

Ràng buộc UNIQUE khi tạo bảng.

Đoạn mã SQL sau tạo ra ràng buộc UNIQUE trên cột PID trong khi tạo bảng “Persons”.

Mã MYSQL

CREATE TABLE Persons
(
        PID       INT        NOT NULL,
        LastName       varchar(255)       NOT NULL,
        FirstName       varchar(255),
        Address       varchar(255),
        City       varchar(255),
        UNIQUE (PID)
);

hoặc

CREATE TABLE Persons
(
        PID       INT       NOT NULL       UNIQUE,
        LastName       varchar(255)       NOT NULL,
        FirstName       varchar(255),
        Address       varchar(255),
        City       varchar(255)
);

Nếu bảng Persons tồn tại (đã được tạo ra từ trước), khi đó để thêm ràng buộc UNIQUE vào cột PID, có thể làm như sau:

ALTER TABLE Persons

MODIFY PID INT NOT NULL UNIQUE;

SQL cũng hỗ trợ việc thêm ràng buộc UNIQUE cho nhiều cột,

ALTER TABLE Persons

ADD CONSTRAINT myUniqueConstraint UNIQUE(PID, LastName);

DROP (xóa bỏ) ràng buộc UNIQUE

Để xóa bỏ một ràng buộc trong SQL ta có thể thực hiện như sau:

ALTER TABLE Persons

DROP CONSTRAINT myUniqueConstraint;

Với MYSQL đoạn mã trên sẽ là

ALTER TABLE Persons

DROP INDEX myUniqueConstraint;

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *