sql >> Database teknologi >  >> RDS >> Mysql

(mysql, php) Hvordan får man auto_increment feltværdi før indsættelse af data?

Autoincrement-værdien genereres af databasen selv, når indsættelsen er udført; hvilket betyder, at du ikke kan få det, før du udfører selve indsættelsesforespørgslen.

Den løsning, du foreslog, er ikke den, der ofte bruges -- hvilket ville være :

  • indsæt nogle halvtomme data
  • hent den automatiske stigningsværdi, der er blevet genereret
  • foretag dine beregninger ved at bruge denne autoincrement-værdi
  • opdater rækken for at sætte de nye/fulde data på plads -- ved hjælp af autoincrement genereret tidligere i where klausul i update forespørgsel for at identificere, hvilken række der opdateres.

Som en sikkerhedsforanstaltning skal alle disse handlinger naturligvis udføres i en transaktion (for at sikre en "alt eller intet"-adfærd)


Som pseudokode :

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. Hvordan kan jeg forhindre SQL-injektion i PHP?

  2. Hent poster, der ikke er nul efter decimaltegnet i PostgreSQL

  3. Tilladelse nægtet til forholdet

  4. flere forespørgsler samme tabel, men i forskellige kolonner mysql