Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mysql - Mencegah entri duplikat dari kolom gabungan dengan Indeks Unik

Pertanyaan Anda:"Dapatkah saya mencapai ini dengan kueri mysql menggunakan indeks unik ? "

Jawabannya 100% ya.

Ada dua cara untuk membuat indeks:

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

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

Namun, ini hanya akan berfungsi jika tabel Anda tidak memiliki data duplikat. Jika tidak, Anda akan menerima pesan kesalahan seperti ini:

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

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

Oleh karena itu, Anda perlu:

  1. buat tabel kosong baru yang mirip dengan targets Anda meja.
  2. buat indeks unik.
  3. INSERT IGNORE data dari tabel lama.
  4. Ganti nama targets ke targets_old dan targets_new ke targets .

Contoh:

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. Pengecualian Hibernate pada MySQL Cross Join Query

  2. PHP Laravel:Tidak ada koneksi yang dapat dibuat karena mesin target secara aktif menolaknya

  3. mana yang lebih baik satu permintaan besar atau beberapa permintaan kecil?

  4. cara menyesuaikan lebar sel secara otomatis di fpdf menggunakan php dan mysql

  5. bertahan Java LocalDate di MySQL