Vermutlich eher "darf" statt "muss". Für den Fall gibt es den Unique-Index. Der sorgt dafür, dass kein zweiter Datensatz mit dem selben Wert eingefügt werden kann. Und um TOCTTOU zu umgehen, fragt man nicht vorher, ob ein Wert existiert, sondern schreibt einfach auf gut Glück drauf los. Wenn er noch nicht existierte, gibt es nun einen neuen Datensatz, ansonsten meldet sich das DBMS mit einer Unique-Constraint-Verletzung, die man auswerten kann.
Aha? Heißt also ungefähr, dass ich alles beim alten lasse und den Unique-Index auf die Spalte lege.
Danach müßte ich wissen, wie mysql eine Unique-Constraint-Verletzung meldet und für diesen Fall schick ich das Script wieder an den Punkt, an dem die max-Id ausgelesen wird?
Frage: Was macht denn mysql bei einer Unique-Constraint-Verletzung?
Gruß, Bruno