Ràng buộc duy nhất (UNIQUE Constraint) trong PostgreSQL được sử dụng để đảm bảo rằng giá trị trong một cột hoặc một nhóm cột là duy nhất trong bảng CSDL. Khi bạn thêm hoặc cập nhật dữ liệu, ràng buộc này sẽ kiểm tra xem giá trị đó đã tồn tại trong cột hay nhóm cột tương ứng chưa. Nếu đã tồn tại, nó sẽ gây ra lỗi.
Khi bạn áp dụng ràng buộc duy nhất cho một cột hoặc một nhóm cột trong PostgreSQL, hệ thống tự động tạo một chỉ mục duy nhất (Unique index) trên cột hoặc nhóm cột đó. Điều này giúp tối ưu hóa việc kiểm tra tính duy nhất của giá trị và tăng cường hiệu suất truy vấn trong CSDL.
Định nghĩa rằng buộc duy nhất (UNIQUE Constraint) khi tạo mới 1 bảng
Định nghĩa rằng buộc sử dụng cho 1 cột
Cú pháp lệnh:
CREATE TABLE <table_name> ( <column_name> <data_type> UNIQUE );
Ví dụ: Tạo bảng username có cột username có rằng buộc duy nhất Unique
CREATE TABLE users ( user_id serial NOT NULL PRIMARY KEY, username character varying UNIQUE, password character varying, email character varying, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone, deleted_at timestamp without time zone );
Bây giờ chúng ta thực hiện insert 2 lần với câu SQL Query sau:
INSERT INTO users (username, created_at) VALUES ('admin', '2019-01-01 00:00:00');
Kết quả lần insert thứ 2 sẽ báo lỗi vì bị trùng lặp dữ liệu
Định nghĩa rằng buộc sử dụng cho 1 nhóm các cột
Cú pháp lệnh:
CREATE TABLE <table_name> ( <column_name_1> <data_type> <column_name_2> <data_type> UNIQUE(column_name_1, column_name_2) );
Lúc đó, nếu dữ liệu trong cả hai cột “column_name_1” và “column_name_2” đều giống nhau, thì giá trị của chúng sẽ là duy nhất.