Hi!
[SELECT; if (vorhanden) break; else INSERT;]
So macht man das nicht, weil nur diese eine Stelle kontrolliert, ob doppelte Werte eingetragen werden. An anderer Stelle kann diese gewünschte Einschränkung problemlos umgangen werden. Ebenso könnte in einer Mehrnutzerumgebung, wie sie das Web darstellt, zwischen Abfrage une Eintrag bereits ein anderer den Eintrag vorgenommen haben. Das ist zwar in der Regel nicht sehr wahrscheinlich, weil es wohl selten vorkommt, dass genau zur selben Zeit jemand den selben Gedanken hatte, aber trotzdem macht man das nicht. Wenn sowas doch vorkommt, sind solche Fehler schwer zu finden, weil sie von Natur aus ganz schlecht nachvollziehbar sind.
Deshalb ist es besser, auf die Spalte (oder auch mehrere Spalten), in der (oder über die) keine Dopplungen enthalten sein dürfen, einen Unique-Index zu legen. Dann frage man nicht vorher ab, sondern mache einfach auf gut Glück das INSERT. Wenn der Datensatz noch nicht vorhanden war, wird er eingetragen und das Statement meldet keinen Fehler. War er schon vorhanden, gibt es einen Unique-Constraint-Fehler. Beim Auswerten auf Fehler fragt man nun gezielt diesen Fehler ab und weiß bei seinem Auftreten, dass der Datensatz schon vorhanden war.
Lo!