Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SELECT LAST_INSERT_ID() zwraca 0 po użyciu przygotowanej instrukcji

LAST_INSERT_ID zadziała tylko dla automatycznie wygenerowanego klucza podstawowego, który został utworzony w polu auto_increment. W twoim przypadku wygląda na to, że podajesz identyfikator jawnie, więc identyfikator ostatniego wstawienia nie jest ustawiony.

To jest wyraźne:

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)

To jest domniemane:

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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użycie MySQL DATE_ADD, interwał 5 dni

  2. Wiele obiektów SQL w PHP/MySQLi

  3. Zmień funkcję na PDO

  4. Indeks PostgreSQL a indeks InnoDB — zrozumienie różnic

  5. Uzyskaj rekordy miesięcznie, ale uzyskaj również zero, jeśli nie ma rekordów w tym miesiącu