Mysql
 sql >> Datenbank >  >> RDS >> Mysql

(mysql, php) Wie bekomme ich den auto_increment-Feldwert, bevor ich Daten einfüge?

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 des update 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