Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SELECT LAST_INSERT_ID() retorna 0 após usar a instrução preparada


LAST_INSERT_ID só funcionaria para chave primária gerada automaticamente, que foi criada no campo auto_increment. No seu caso, parece que você está fornecendo o id explicitamente, então o último id de inserção não está definido.

Isso é explícito:
mysql> insert into test (id, name) VALUES (5, 'test 2');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                0 |
+------------------+
1 row in set (0.00 sec)

Isso está implícito:
mysql> insert into test (name) values ('test');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+
1 row in set (0.00 sec)