Mysql
 sql >> Database >  >> RDS >> Mysql

SELECT LAST_INSERT_ID() restituisce 0 dopo aver utilizzato l'istruzione preparata

LAST_INSERT_ID funzionerebbe solo per la chiave primaria generata automaticamente, che è stata creata nel campo auto_increment. Nel tuo caso, sembra che tu stia fornendo l'id in modo esplicito, quindi l'ultimo ID di inserimento non è impostato.

Questo è esplicito:

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)

Questo è implicito:

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)