O problema é que
LAST_INSERT_ID(...);
com um argumento não retorna o ID gerado, mas define o valor fornecido na "memória" de LAST_INSERT_ID()
e o devolve. Portanto, em sua primeira execução, nenhum ID incrementado automaticamente foi gerado (você mesmo forneceu o valor) e LAST_INSERT_ID()
retornar 0
. Nas execuções a seguir, você salva o valor next+1
no armazenamento interno de LAST_INSERT_ID()
, que retorna o valor. Esse comportamento é descrito no MySQL em 12.14 Funções de informação
:Na verdade, você pode pular o
LAST_INSERT_ID()
ligue e trabalhe sem ele. INSERT INTO
officeRechNr (jahr,monat,zahl)
VALUES
(?,?,1)
ON DUPLICATE KEY UPDATE zahl = zahl+1
Isso inserirá a linha (com o valor fornecido) ou aumentará o contador.
Se você quiser o contador atual para um determinado ano e mês, execute uma instrução SELECT simples. Lembre-se de que você pode precisar de transações ou bloqueios porque um cliente diferente pode aumentar o contador antes de buscá-lo com a instrução SELECT.