sql >> Database >  >> RDS >> Mysql

AUTO_INCREMENT en LAST_INSERT_ID

SELECT max(employeeid) FROM Employee;

De bovenstaande query retourneert de waarde van employeeid van laatst ingevoegde record in werknemerstabel omdat employeeid is een auto-increment kolom. Dit lijkt in orde, maar stel twee threads tegelijkertijd de invoegbewerking uitvoert, bestaat de kans dat u het verkeerde ID van het laatst ingevoegde record krijgt!

Maak je geen zorgen, MySQL biedt een functie die de waarde van de auto-increment-kolom van het laatst ingevoegde record retourneert.

SELECT LAST_INSERT_ID();

LAST_INSERT_ID() is altijd verbindingsspecifiek , dit betekent dat zelfs als de invoegbewerking tegelijkertijd wordt uitgevoerd vanaf verschillende verbindingen, het altijd de waarde van de huidige verbindingsspecifieke bewerking retourneert.

U moet dus eerst een record in de werknemerstabel invoegen, de bovenstaande query uitvoeren om de id-waarde te krijgen en deze gebruiken om in de tweede tabel in te voegen.



  1. Probleem met Java-programma en mySQL-verbinding:geen geschikt stuurprogramma gevonden

  2. Controleer of de kolom bestaat in de MySQL-tabel via PHP

  3. Hoe kan ik de naam van een kolom in laravel wijzigen met behulp van migratie?

  4. Postgresql trigger invoegen om waarde in te stellen