Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mysql - Ngăn chặn các mục nhập trùng lặp của các cột được kết hợp với Chỉ mục duy nhất

Câu hỏi của bạn:" Tôi có thể đạt được điều này với truy vấn mysql sử dụng chỉ mục duy nhất không? "

Câu trả lời là 100% có.

Có hai cách tạo chỉ mục:

1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

2. ALTER TABLE table_name 
ADD UNIQUE index_name (column1, column2, ...);

Tuy nhiên, điều này sẽ chỉ hoạt động nếu bảng của bạn không có dữ liệu trùng lặp hiện có. Nếu không, bạn sẽ nhận được thông báo lỗi như sau:

Query: CREATE UNIQUE INDEX index_name ON targets (a, b)

Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'

Do đó, bạn cần:

  1. tạo một bảng trống mới tương tự như targets của bạn bảng.
  2. tạo chỉ mục duy nhất.
  3. INSERT IGNORE dữ liệu từ bảng cũ.
  4. Đổi tên targets thành targets_oldtargets_new tới targets .

Ví dụ:

CREATE TABLE targets_new LIKE targets;

CREATE UNIQUE INDEX index_name
ON targets_new (a, b);

INSERT IGNORE INTO targets_new SELECT * FROM targets;

RENAME TABLE targets TO targets_old;
RENAME TABLE targets_new TO targets;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để bắt đầu MySQL với --skip-Grant-Table?

  2. MySQL có thể sử dụng Chỉ mục khi có OR giữa các điều kiện không?

  3. Openshift:Làm cách nào để truy cập MySQL từ xa?

  4. MySQL, ĐẶT HÀNG THEO thứ tự chèn, không có cột sắp xếp

  5. MySQL LIKE so với LOCATE