mysql eindeutigen Index als Ausnahmebehandlungsmethode in Java verwendet,
-
06-07-2019 - |
Frage
Ich möchte wissen, ob es eine gute Idee ist Ausnahme zu fangen basierend auf eindeutigen Index von SQL in Java.
ich will ‚für 1-0 doppelten Eintrag‘ eine Ausnahme wie fangen, wenn ja, dann ansonsten ordnungsgemäß in Datenbanktabelle behandelt Ausnahme einfügen?
Lösung
ich sagen, dass Sie das nicht tun, aus zwei Gründen:
- die Fehlermeldungen sind ein wenig unklar: ERROR 1062 (23000): Doppelte Eintrag 'xxx' für die Taste 1 . Sind Sie immer 100% sicher sind, welche Taste 1?
- es sperrt in Dir zu einem bestimmten Datenbank-Anbieter
Ich finde es einfacher zu transaktions :
- prüfen für Zeile Existenz;
- eine Ausnahme aus, wenn die Zeile bereits vorhanden ist;
- legen Sie die neue Zeile.
Leistungsprobleme :
Ich sage zweimal messen, einmal schneiden . Profil die Nutzung für Ihren spezifischen Anwendungsfall. Spitze von meinem Kopf Ich würde sagen, dass die Leistung wird kein Problem sein, mit Ausnahme der schweren db Nutzungsszenarien.
Der Grund dafür ist, dass, sobald Sie eine SELECT
über diese bestimmte Zeile durchführen, werden seine Daten in der Datenbank Cache-Speicher platziert werden und sofort verwendet zum Einsetzen Überprüfung der Index für die INSERT
Aussage gemacht. Auch wenn man bedenkt, dass dieser Zugang durch einen Index führt zu dem Schluss gesichert wird, die Leistung wird kein Problem sein.
Aber, wie immer, tun messen.
Andere Tipps
Ich sehe nicht, warum nicht. Es ist wahrscheinlich effizienter als eine Abfrage vor dem Einsatz ausgeführt wird. Es ist wahrscheinlich besser, um den Fehlercode der Ausnahme zu fangen, anstatt die Fehlermeldung zu erkennen, though.
Sie können den Befehl REPLACE verwenden. Es fügt / Updates auf die Existenz des Datensatzes basiert. Und sein Atom auch während Abfrage dann insert / update nicht. Es hängt davon ab, was wollen Sie tun, wenn Sie die Schlüsselverletzung erkennen?