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

LAST_INSERT_ID() er ulig med $db->insert_id?

Problemet er, at LAST_INSERT_ID(...); med et argument returnerer ikke det genererede ID, men angiver i stedet den givne værdi i "hukommelsen" af LAST_INSERT_ID() og returnerer den. Så i din første udførelse blev der ikke genereret noget automatisk inkrementeret ID (du har selv angivet værdien) og LAST_INSERT_ID() returner 0 . I dine følgende udførelser gemmer du værdien next+1 i det interne lager af LAST_INSERT_ID() , som returnerer værdien. Denne adfærd er beskrevet i MySQL i 12.14 Informationsfunktioner :

Faktisk kan du springe LAST_INSERT_ID() over ring og arbejd uden.

INSERT INTO
    officeRechNr (jahr,monat,zahl)
VALUES
    (?,?,1)
ON DUPLICATE KEY UPDATE zahl = zahl+1

Dette vil indsætte rækken (med den givne værdi) eller øge tælleren.

Hvis du ønsker den aktuelle tæller for et givet år og måned, kører du en simpel SELECT-sætning. Husk, at du muligvis har brug for transaktioner eller låse, fordi en anden klient kunne øge tælleren, før du hentede den med SELECT-sætningen.




  1. T-SQL dynamisk pivot

  2. Brug af JDeveloper med MySQL-database og Oracle-database på AWS RDS, del 2

  3. MySQL COUNT() på tværs af flere kolonner

  4. Hvordan får man mysql tilfældigt heltalsområde?