sql >> Databasteknik >  >> RDS >> Mysql

(mysql, php) Hur får man fram auto_increment-fältvärdet innan man infogar data?

Autoinkrementvärdet genereras av databasen själv när infogningen är klar; vilket betyder att du inte kan få det innan du har gjort den faktiska infogningsfrågan.

Lösningen du föreslog är inte den som ofta används -- vilket skulle vara :

  • infoga lite halvtom data
  • få värdet för autoinkrement som har genererats
  • gör dina beräkningar med det autoinkrementvärdet
  • uppdatera raden för att placera de nya/fullständiga uppgifterna på plats – med hjälp av autoinkrementet som genererades tidigare i where klausul i update fråga för att identifiera vilken rad som uppdateras.

Naturligtvis, som en säkerhetsåtgärd, måste alla dessa operationer göras i en transaktion (för att säkerställa ett "allt eller inget"-beteende)


Som pseudokod :

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. finns det en PRODUKT-funktion som det finns en SUM-funktion i Oracle SQL?

  2. Hur man döljer SQL-databaser som en användare inte har tillgång till

  3. Bästa praxis för lös koppling mellan data och användargränssnitt i Android - Adapter, Filter, CursorLoader och ContentProvider

  4. Vi presenterar uppspelning – ny tidpunktsdiagnos för Spotlight Cloud