PDA

View Full Version : [sql,php] Query con recupero id


beppegrillo
06-10-2006, 19:32
Nella prima query inserisco delle informzioni, la chiave è id auto_increment.
Dopo ho bisogno di quella chiave per fare una seconda query da inserire in una diversa tabella.
Mi chiedevo quale fosse il metodo migliore eccetto viste, per effettuare la cosa.
Al momento faccio una select con tutti i campi , recupero l'id e proseguo, ma non mi piace molto ed è anche scorretto..

bianchins
06-10-2006, 19:41
Se ho capito bene il tuo problema ti consiglio mysql_insert_id
(http://it.php.net/manual/it/function.mysql-insert-id.php)
Che recupera l'ultimo id inserito proprio per problemi simili al tuo riferiti all'autoincrement :)

beppegrillo
06-10-2006, 20:14
Se ho capito bene il tuo problema ti consiglio mysql_insert_id
(http://it.php.net/manual/it/function.mysql-insert-id.php)
Che recupera l'ultimo id inserito proprio per problemi simili al tuo riferiti all'autoincrement :)
si esatto è quello il problema ;)
Anche se però questa logica di fare non è proprio priva di errori, mi spiego:
Se faccio un insert, poi nel frattempo arriva un'altro insert la funzione mi restituirà un id errato. Insomma problemi di atomicità , mi sa che dovrei usare una transazione per questo :)

dupa
06-10-2006, 20:28
si esatto è quello il problema ;)
Anche se però questa logica di fare non è proprio priva di errori, mi spiego:
Se faccio un insert, poi nel frattempo arriva un'altro insert la funzione mi restituirà un id errato. Insomma problemi di atomicità , mi sa che dovrei usare una transazione per questo :)

http://dev.mysql.com/doc/refman/4.1/en/getting-unique-id.html

beppegrillo
06-10-2006, 20:41
http://dev.mysql.com/doc/refman/4.1/en/getting-unique-id.html
ottimo grazie, gli darò uno sguardo ;)

argoon
07-10-2006, 12:24
Dopo che hai inserito il record con l'id auto_increment, recuperi questo valore con la query

SELECT @@IDENTITY

che ti ritorna esattamente l'id appena inserito.

Ciao!