sql >> Databáze >  >> RDS >> Mysql

Mysql - Prevence duplicitních záznamů kombinovaných sloupců s jedinečným indexem

Vaše otázka:"Mohu toho dosáhnout pomocí dotazu mysql pomocí jedinečného indexu? "

."

Odpověď je 100% ano.

Existují dva způsoby vytvoření indexu:

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

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

To však bude fungovat pouze v případě, že vaše tabulka nemá existující duplicitní data. V opačném případě se zobrazí chybová zpráva, jako je tato:

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

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

Proto musíte:

  1. vytvořte novou prázdnou tabulku podobnou vašim targets stůl.
  2. vytvořit jedinečný index.
  3. INSERT IGNORE data ze staré tabulky.
  4. Přejmenujte targets na targets_old a targets_new na targets .

Příklad:

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. PostgreSQL nepřijímá alias sloupce v klauzuli WHERE

  2. Mysql vyhledá řetězec a číslo pomocí MATCH() AGAINST()

  3. Je možné upravovat položky tabulky z LibreOffice Base?

  4. Unit testování pro PL/SQL