Der Autoincrement-Wert wird von der Datenbank selbst generiert, wenn das Einfügen abgeschlossen ist; was bedeutet, dass Sie es nicht erhalten können, bevor Sie die eigentliche Einfügeabfrage durchgeführt haben.
Die Lösung, die Sie vorgeschlagen haben, ist nicht die, die oft verwendet wird – was wäre:
- Einige halbleere Daten einfügen
- erhalten Sie den generierten Autoincrement-Wert
- Führen Sie Ihre Berechnungen mit diesem Autoincrement-Wert durch
- aktualisiere die Zeile, um die neuen/vollständigen Daten an Ort und Stelle zu platzieren -- unter Verwendung des zuvor im
where
generierten Autoinkrements -Klausel desupdate
Abfrage, um festzustellen, welche Zeile aktualisiert wird.
Natürlich müssen alle diese Operationen aus Sicherheitsgründen in einer Transaktion durchgeführt werden (um ein "Alles-oder-nichts"-Verhalten zu gewährleisten)
Als Pseudo-Code:
begin transaction
insert into your table (half empty values);
$id = get last autoincrement id
do calculations
update set data = full data where id = $id
commit transaction