Il problema è che LAST_INSERT_ID(...);
con un argomento non restituisce l'ID generato ma imposta invece il valore dato nella "memoria" di LAST_INSERT_ID()
e lo restituisce. Quindi, nella tua prima esecuzione non è stato generato alcun ID auto incrementato (hai fornito il valore da solo) e LAST_INSERT_ID()
restituisci 0
. Nelle esecuzioni successive salvi il valore next+1
nella memoria interna di LAST_INSERT_ID()
, che restituisce il valore. Questo comportamento è descritto in MySQL in 12.14 Funzioni informative
:
In effetti, puoi saltare il LAST_INSERT_ID()
chiama e lavora senza di essa.
INSERT INTO
officeRechNr (jahr,monat,zahl)
VALUES
(?,?,1)
ON DUPLICATE KEY UPDATE zahl = zahl+1
Questo inserirà la riga (con il valore dato) o aumenterà il contatore.
Se si desidera il contatore corrente per un determinato anno e mese, eseguire una semplice istruzione SELECT. Tieni presente che potresti aver bisogno di transazioni o blocchi perché un altro cliente potrebbe aumentare il contatore prima che tu lo abbia recuperato con l'istruzione SELECT.