sql >> Database >  >> RDS >> Mysql

(mysql, php) Hoe krijg ik auto_increment veldwaarde voordat gegevens worden ingevoegd?

De autoincrement-waarde wordt gegenereerd door de database zelf, wanneer de invoeging is voltooid; wat betekent dat je het niet kunt krijgen voordat je de eigenlijke invoegquery hebt uitgevoerd.

De oplossing die u voorstelde is niet degene die vaak wordt gebruikt -- dat zou zijn:

  • vul enkele halflege gegevens in
  • haal de auto-incrementwaarde op die is gegenereerd
  • voer je berekeningen uit met de waarde voor automatisch ophogen
  • werk de rij bij om de nieuwe / volledige gegevens op hun plaats te zetten -- met behulp van de auto-increment die eerder is gegenereerd in de where clausule van de update query, om te bepalen welke rij wordt bijgewerkt.

Als veiligheidsmaatregel moeten al deze bewerkingen natuurlijk worden uitgevoerd in een transactie (om een ​​"alles of niets"-gedrag te garanderen)


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


  1. PostgreSQL wiskundige functies

  2. Tips voor het opslaan van uw TimescaleDB-back-ups in de cloud

  3. Hoe datetime naar UTC te converteren in MySQL

  4. BREKEND NIEUWS:Nieuwe Microsoft SQL Server Native Client 18 uitgebracht!