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

mysqli insert - ale pouze pokud nejde o duplikát

Zvažte vložení unique index na této konkrétní tabulce. Následující kód přidá index a odstraní všechny aktuální duplikáty:

ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);

Po přidání použijte INSERT IGNORE nebo INSERT...ON DUPLICATE KEY UPDATE . Předtvarují vložku pouze v případě, že neexistují žádné duplikáty.

$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");

Mysql vyhodí chybu, protože e-mail je již v databázi. Příkaz IGNORE však říká skriptu, aby v tomto dotazu nevěnoval žádnou pozornost chybám, protože v tomto případě to očekáváte pro duplicitní řádek.

Existuje také způsob, jak upozornit uživatele zprávou o selhání nebo úspěchu, a to i pomocí INSERT IGNORE . Použijte MYSQL LAST_INSERT_ID() . Pokud bylo ID zadáno, bylo vloženo. Pokud ne, pak tam e-mail již byl (nebo došlo k jiné chybě).



  1. Co znamená dvojtečka před literálem v příkazu SQL?

  2. SQL:Vyberte pouze sloupce s hodnotami NULL

  3. Hledání duplicitních řádků na serveru SQL Server

  4. Alternativy MySQL Workbench - Správa uživatelů databáze ClusterControl