Unique index trong PostgreSQL cho phép bạn đặt một ràng buộc rằng các giá trị trong cột (hoặc các cột) cụ thể không được trùng lặp. Khi một unique index được áp dụng, bất kỳ cố gắng nào để chèn hoặc cập nhật một hàng với giá trị đã tồn tại sẽ dẫn đến lỗi.
Kết nối đến máy chủ PostgreSQL của bạn qua psql
hoặc PostgreSQL Workbench để thực hiện các lệnh SQL.
Sử dụng câu lệnh CREATE UNIQUE INDEX
để tạo unique index. Cú pháp cơ bản như sau:
CREATE UNIQUE INDEX index_name ON table_name (column1, column2, ...);
Giả sử bạn có một bảng users
với các cột email
và username
, và bạn muốn đảm bảo rằng cả hai cột này không có giá trị trùng lặp. Bạn có thể tạo unique index như sau:
CREATE UNIQUE INDEX unique_email ON users (email);
Hoặc nếu bạn muốn đảm bảo rằng cặp username
và email
là duy nhất:
CREATE UNIQUE INDEX unique_username_email ON users (username, email);
Bạn có thể kiểm tra các index đã được tạo trong bảng bằng cách sử dụng câu lệnh sau:
\d users
Để xem thông tin chi tiết về các index, bạn có thể sử dụng:
SELECT * FROM pg_indexes WHERE tablename = 'users';
Khi bạn cố gắng chèn một hàng với giá trị trùng lặp trong cột đã lập chỉ mục, PostgreSQL sẽ báo lỗi. Ví dụ:
INSERT INTO users (email, username) VALUES ('[email protected]', 'user1'); INSERT INTO users (email, username) VALUES ('[email protected]', 'user2'); -- Lỗi
Bạn có thể bắt lỗi trong ứng dụng của mình để xử lý các tình huống chèn trùng lặp.
Nếu bạn không còn cần unique index nữa, bạn có thể xóa nó bằng câu lệnh DROP INDEX
:
DROP INDEX unique_email;
Tạo unique index trong PostgreSQL là một cách hiệu quả để đảm bảo tính duy nhất cho các giá trị trong bảng. Qua các bước hướng dẫn trên, bạn đã có thể tạo, kiểm tra và xóa unique index một cách dễ dàng. Hãy áp dụng unique index trong các dự án của bạn để cải thiện tính toàn vẹn dữ liệu và hiệu suất truy vấn!