sql >> Database >  >> RDS >> Mysql

Het equivalent van de SQLServer-functie SCOPE_IDENTITY() in mySQL?

Dit is wat je zoekt:

LAST_INSERT_ID()

Als reactie op de opmerking van de OP heb ik de volgende bench-test gemaakt:

CREATE TABLE Foo
(
    FooId INT AUTO_INCREMENT PRIMARY KEY
);

CREATE TABLE Bar
(
    BarId INT AUTO_INCREMENT PRIMARY KEY
);

INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();

CREATE TRIGGER FooTrigger AFTER INSERT ON Foo
    FOR EACH ROW BEGIN
        INSERT INTO Bar () VALUES ();
    END;

INSERT INTO Foo () VALUES (); SELECT LAST_INSERT_ID();

Dit geeft als resultaat:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                1 |
+------------------+

Het gebruikt dus de LAST_INSERT_ID() van de originele tabel en niet de tabel INSERT gestoken in de trigger.

Bewerken: Ik realiseerde me na al die tijd dat het resultaat van de SELECT LAST_INSERT_ID() getoond in mijn antwoord was fout, hoewel de conclusie aan het einde correct was. Ik heb het resultaat bijgewerkt zodat het de juiste waarde heeft.



  1. SQL:Herhaal een resultaatrij meerdere keren en nummer de rijen

  2. Wat zijn de voordelen van werken met een toegangsondersteuningsbedrijf?

  3. Door Oracle ondersteunde versiesmatrix

  4. CHAR() Voorbeelden in MySQL