Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysqli insert - ale tylko jeśli nie jest to duplikat

Rozważ umieszczenie unique indeks na tej konkretnej tabeli. Poniższy kod doda indeks i usunie wszystkie bieżące duplikaty:

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

Po dodaniu użyj INSERT IGNORE lub INSERT...ON DUPLICATE KEY UPDATE . Wykonają wstawkę tylko wtedy, gdy nie ma duplikatów.

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

Mysql zgłosi błąd, ponieważ e-mail jest już w bazie danych. Jednak polecenie IGNORE mówi skryptowi, aby nie zwracał uwagi na błędy w tym zapytaniu, ponieważ w tym przypadku oczekuje się tego dla zduplikowanego wiersza.

Istnieje również sposób, aby ostrzec użytkownika komunikatem o niepowodzeniu lub powodzeniu, nawet przy użyciu INSERT IGNORE . Użyj MYSQL LAST_INSERT_ID() . Jeśli podano identyfikator, został on wstawiony. Jeśli nie, oznacza to, że e-mail już tam był (lub wystąpił inny błąd).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zdefiniować liczbę całkowitą bez znaku w SQLAlchemy?

  2. Alokacja pamięci MySQL TEXT

  3. Znajdź najbliższą szerokość/długość geograficzną za pomocą zapytania SQL

  4. Obsługa przejściowych awarii w .net core 2.1 MVC dla bazy danych MySQL

  5. Zapytanie pełnotekstowe z pojedynczym cytatem