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

LAST_INSERT_ID() е неравен на $db->insert_id?

Проблемът е, че LAST_INSERT_ID(...); с аргумент не връща генерирания идентификатор, а вместо това задава дадената стойност в "паметта" на LAST_INSERT_ID() и го връща. Така че, при първото ви изпълнение не беше генериран автоматично увеличен идентификатор (вие сте предоставили стойността сами) и LAST_INSERT_ID() върнете 0 . В следващите си изпълнения запазвате стойността next+1 във вътрешната памет на LAST_INSERT_ID() , което връща стойността. Това поведение е описано в MySQL в 12.14 Информационни функции :

Всъщност можете да пропуснете LAST_INSERT_ID() обадете се и работете без него.

INSERT INTO
    officeRechNr (jahr,monat,zahl)
VALUES
    (?,?,1)
ON DUPLICATE KEY UPDATE zahl = zahl+1

Това ще вмъкне реда (с дадената стойност) или ще увеличи брояча.

Ако искате текущия брояч за дадена година и месец, изпълнявате обикновен оператор SELECT. Имайте предвид, че може да се нуждаете от транзакции или заключвания, защото друг клиент може да увеличи брояча, преди да го извлечете с оператора SELECT.




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

  2. Мога ли да създам изглед с параметър в MySQL?

  3. Друг mysqld сървър, работещ на порт 3306 грешка

  4. Надстройте MySQL до MariaDB 10 (Част 2 – Надстройте MariaDB/MySQL 5.5 до версия 10.0)

  5. Вземете първата и последната дата на следващия месец в MySQL