Ich habe hier bei der Diskussion das Wort 'Mehrbenutzerumgebung' und 'Sicherstellung der Singularität' vermisst. Vermutlich habe ich es übersehen. Ich finds beruhigend, diese elementare Operation auf
DBMS Seite in guten Händen zu wissen.
Es gibt eigentlich nur zwei Sorten von Tabellen, wo ich auf AutoIncs verzichte:
1. Wenn ich die ID (aus welchen Gründen auch immer) manuell vergeben will.
2. Bei einer Tabelle, die eine m:n Relation zwischen zwei Tabellen speichert.
Ansonsten sind AutoIncs die sicherste (und vor allen Dingen schnellste) Möglichkeit, IDs zu befüllen. Der Zeitpunkt (vor dem Insert per Generator oder nach dem Insert) ist irrelevant, da Relationen ausschliesslich innerhalb von Transaktionen definiert werden sollen.
Zum Thema Speed: Ich wurde mal zu einem Projekt als Nothilfe gerufen, wobei die ID per Hand erzeugt wurden: Eine extra Tabelle enthielt lauter Zähler, und bei einem Insert wurde vorher ein neuer Zähler von der Tabelle geholt. Das Erste, was ich tat, war das auf AutoIncs zu ändern, was die Insert-Performance um den Faktor 100 schneller machte. Pervers genug, das diese Zählermethode von einem IT-Experten empfohlen war. Kann man mal sehen, was sich alles IT-Exschpedde nennen darf...
Ausser aus theoretischen Überlegungen verschwende ich keinen Gedanken mehr an AutoIncs. Sie gehören dazu. Man macht es so. Es klappt. Fertig.