Du musst nur die
Exception ggf. abfangen und dem User vermitteln.
Stimmt, wenn es um einen einzelnen Datensatz geht und der User die
Exception haben möchte. Was aber, wenn es um bis zu 120 Datensätze pro Sekunde geht, die man über eine Datenschnittstelle übermittelt bekommt und "unbeaufsichtigt" in einer Schleife mittels Prepared Statements so schnell wie möglich der Datenbank hinzufügen soll? Dann ist die o.g. SELECT-Abfrage über die Anbieter-Tabelle ein gnadenloser Performance-Killer. Deswegen war ich gespannt, ob es noch eine schönere Methode gibt...
Edit: Natürlich muss man nicht zwingend vor jedem INSERT diese SELECT-Abfrage ausführen. Es würde reichen, wenn man die
Exception abfängt und erst dann die Referenz auf den Anbieter holt. Aber im meinem bekomme ich die Daten immer von denselber Anbietern, so dass es nach gewisser Zeit praktisch jeder INSERT ein UNIQUE-Konflikt auslösen würde.