Mysql
 sql >> база данни >  >> RDS >> Mysql

Еквивалентът на функцията на SQLServer SCOPE_IDENTITY() в mySQL?

Това е това, което търсите:

LAST_INSERT_ID()

В отговор на коментара на ОП създадох следния стенд тест:

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();

Това връща:

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

Така че използва LAST_INSERT_ID() на оригиналната таблица, а не на таблицата INSERT въведен вътре в спусъка.

Редактиране: Разбрах след цялото това време, че резултатът от SELECT LAST_INSERT_ID() показан в моя отговор беше грешен, въпреки че заключението в края беше правилно. Актуализирах резултата, за да бъде правилната стойност.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не можете да посочите целева таблица за актуализиране в клаузата FROM

  2. Как мога да импортирам база данни с MySQL от терминал?

  3. Как да получа първия ден от всеки съответен месец в mysql?

  4. Създайте физически архиви на вашите MariaDB или MySQL бази данни

  5. Алтернативи на MySQL Workbench - ClusterControl Database User Management