Ciao,
volevo provare LAST_INSERT_ID() in MySQL Query Browser.
Ho creato tabella MYSQL, dove il primo campo è l'ID, contatore tipo Auto_Increment.
Inserisco un nuovo record. Eseguo SELECT LAST_INSERT_ID() ed ottengo sempre 0.
![]()
Grazie.
Ciao,
volevo provare LAST_INSERT_ID() in MySQL Query Browser.
Ho creato tabella MYSQL, dove il primo campo è l'ID, contatore tipo Auto_Increment.
Inserisco un nuovo record. Eseguo SELECT LAST_INSERT_ID() ed ottengo sempre 0.
![]()
Grazie.
shd
il last_insert_id va usato subito dopo l'operazione di insert, se lo usi in una query così ti darà sempre zero.
http://dev.mysql.com/doc/mysql/en/od...insert-id.html
se vuoi sapere l'ultimo id inserito usa la funzione MAX
http://dev.mysql.com/doc/mysql/en/gr...functions.html
![]()
Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone
Grazie,
ma io sto provando con MySQLQueryBrowser e alla fine userò Java per eseguire lo statement. Ho eseguito in sequenza le istruzioni di INSERT e di SELECT LAST_INSERT_ID(). Cos'altro potevo fare?
Ciao.
shd
so che il tread è parecchio vecchio ma il mio discorso può proseguire da questo.
Anch'io ricevo sempre 0 eseguendo da phpmyadmin prima la query insert e poi la query last_insert_id in modo indipendente.
Eseguendole assieme (quindi last_insert_id dopo il ";" della query precente) invece funziona.
Avrei, dunque, alcuni dubbi sul funzionamento di LAST_INSERT_ID():
- LAST_INSERT_ID() va sempre eseguito concatenato alla query precedente?
oppure
- in generale chi si collega al sito avvia una connessione SQL propria o ne viene usata solo una?
- in entrambi i casi, se viene chiamata una funzione che effettua un INSERT e poi un LAST_INSERT_ID come valore di return come agisce last_insert_id ? rischio di non ricevere in return il valore del precedente INSERT? Oppure rischio di ricevere sempre 0?
- se esiste il problema precedente, si può evitare utilizzando le transazioni?
Grazie!