Tach!
Erstmal stelle ich autocommit auf false und anschließend rufe ich dieses Script mehrmals auf. Er zählt immer weiter rauf, bis die AI ID irgendwann hohe Werte erreicht. Schön und gut, aber eigentlich will ich das garnicht, da ich ja ein autocommit auf false gestellt habe und jedesmal vorsorglich rollback() ausführe. Wieso zählt der da trotzdem die AI ID rauf? Und wie verhindere ich das?
Warum willst du das verhindern? Eine ID soll identifizieren und nichts weiter. Wenn du da aus anderen Gründen eine bestimmte Reihenfolge/Lückenlosigkeit/wasimmer benötigst, solltest du dein Konzept überdenken. Dafür ist der AI-ID-Mechanismus nicht ausgelegt.
Und was wäre, wenn die ID nicht global raufgezählt würde? Der erste Request bekommt die 1. Noch während die Transaktion läuft, kommt ein weiterer Request. Was soll dieser denn für eine ID bekommen? Doch nicht etwa dieselbe wie in der gerade nebenan laufenden Transaktion, auf das es beim Commit zur Katastrophe kommt? Die ID beim Rollback wieder zurückzustellen, ist unnötiger Aufwand und würde auch nur dann sinnvoll sein, wenn zwischenzeitlich keine (auto)committete Aktion stattfand.
dedlfix.