ich sagen, Sie tun das nicht, aus zwei Gründen:
- die Fehlermeldungen sind ein wenig unklar: ERROR 1062 (23000): doppelter Eintrag 'xxx' für die Taste 1. Sind Sie immer 100% sicher, welcher Schlüssel 1 ist?
- es in Dir zu einem bestimmten Datenbank-Anbieter sperrt
Ich finde es einfacher zu transaktions:
- Scheck auf der Existenz der Zeile;
- eine Ausnahme auslösen, wenn die Zeile bereits existiert;
- Die neue Zeile einfügen.
Performance-Probleme:
ich sagen zweimal messen, einmal schneiden. Profilieren Sie die Nutzung für Ihren spezifischen Anwendungsfall. Top of my head würde ich sagen, dass die Leistung kein Problem sein wird, außer für die 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-Caches und sofort zum Einsetzen Überprüfung der Index für die INSERT
Aussage gemacht verwendet werden darf. Wenn man bedenkt, dass dieser Zugang durch einen Index unterstützt wird, führt dies zu der Schlussfolgerung, dass die Leistung kein Problem darstellt.
Aber wie immer messen.
Sie versuchen also, eine Einfügung für eine eindeutige Spalte zu erstellen, ohne zu überprüfen, ob der Wert bereits vorhanden ist. Wenn Sie eine Ausnahme erhalten, wissen Sie, dass ein Duplikat vorhanden ist. Ist das richtig ? – Babar
ja. Ich möchte überprüfen, ob nur –