sql >> Database >  >> RDS >> Mysql

Is het conceptueel juist om een ​​SELECT MAX (id) enz. te doen om de laatst ingevoegde rij te vinden?

Dit lijkt subjectief, maar ik zou nee zeggen, het is conceptueel niet juist, omdat:

  • je wilt de meest recent ingevoegde rij
  • maar uw zoekopdracht kijkt naar de maximale id waarde

Ja, er is een relatie tussen max id en meest recente insert, maar denk aan het volgende:

  • wat als de meest recent ingevoegde rij is verwijderd?

Antwoord op MySQL:je krijgt verschillende resultaten. Merk op dat er niet eens multithreading of meerdere processen hoeven te zijn om dit te laten mislukken. Dat komt omdat het twee verschillende dingen zijn (die weliswaar vaak dezelfde resultaten kunnen opleveren).

select max(id) from <tablename>

vs

select last_insert_id()

(Raad eens welke de juiste is.)

@Dems wees erop dat de OP dubbelzinnig is. Ik zal mijn belangrijkste punt verduidelijken:

We hebben het over drie verschillende stukjes informatie:

  • maximaal id waarde
  • id van de meest recent ingevoegde rij, specifiek voor een sessie
  • id van de rij die het laatst in de tabel is ingevoegd (ongeacht de sessie)

Het gevaarlijke is dat soms vragen naar de ene het juiste antwoord voor de andere geeft -- maar niet altijd .



  1. mysql jdbc-stuurprogramma ondersteunt geen scheidingstekens in triggers met meerdere instructies

  2. Toon alleen uren in MYSQL DATEDIFF

  3. Hoe PHP te dwingen nieuwe regels te lezen en terug te keren als

  4. Database-ontwerp voor opmerkingen en antwoorden