Mysql
 sql >> Datenbank >  >> RDS >> Mysql

REPLACE versus INSERT in SQL

Gemäß der Dokumentation , der Unterschied ist:

Was es also tut:

  • Versuchen Sie, die Zeile mit einem der verfügbaren Indizes abzugleichen;
  • Falls die Zeile noch nicht existiert:füge eine neue hinzu;
  • Wenn die Zeile bereits existiert:löschen Sie die vorhandene Zeile und fügen Sie anschließend eine neue hinzu.

Wann könnte dies über separates insert sinnvoll sein und update Aussagen?

  • Sie können dies sicher aufrufen und müssen sich keine Gedanken über vorhandene Zeilen machen (eine Anweisung gegenüber zwei);
  • Wenn Sie möchten, dass zugehörige Daten beim inserting entfernt werden / updating , können Sie replace verwenden :Es löscht auch alle zugehörigen Daten);
  • Wenn Trigger ausgelöst werden müssen und Sie ein insert erwarten (schlechter Grund, okay).