Moin!
Warum geht das nicht
- weil das Statement erst mal ausgefuehrt sein muss, bevor feststeht, welche ID vergeben wurde.
»»
hmmm, doch ich könnte zb im gleichen Query last_insert_id auslesen und +1 setzen, aber das wäre nur ein Notlösung und ich bin mir nicht sicher ob da nicht schneller Konflikte im regen Betrieb passieren können.
Das, was dir last_insert_id ausgibt (also wahlweise durch SQL abgefragt, Funktion LAST_INSERT_ID(), oder durch den DB-Client, der diese Info auch "direkt" zurückgeben kann, in PHP z.B. mysql_insert_id()
), ist die ID, die beim INSERT erzeugt wurde - wenn du es denn ausgeführt hast. Diese ID kannst du abfragen und speichern und bei weiteren INSERTs verwenden.
last_insert_id + 1 ist allerdings Schwachsinn. Die Datenbank triff Vorkehrungen, dass du garantiert immer genau die ID kriegst, die auf der derzeitigen DB-Connection erzeugt wurde - weil das ja parallel auf mehreren Connections passieren könnte, wenn das Skript (oder unterschiedliche Skripte) von mehreren Nutzern gleichzeitig aufgerufen wird. Würdest du einfach eine Eins addieren, würdest du garantiert Müll erzeugen.
- Sven Rautenberg
"Love your nation - respect the others."