Back to top

Autore Topic: insertid() è atomico?  (Letto 2403 volte)

Offline iacoposk8

  • Appassionato
  • ***
  • Post: 529
    • Mostra profilo
insertid() è atomico?
« il: 16 Gen 2013, 11:30:02 »
Ciao a tutti! se uso
Codice: [Seleziona]
$database->insertid();per recuperare l'ultimo id inserito, joomla gestisce il tutto atomicamente?

mi spiego meglio, se ho due rischieste simultanee ad una certa pagina, c'è il rischio di avere due insert assieme e che quindi i due $database->insertid(); diano lo stesso risultato, falsificando le seguenti operazioni che fan uso dell'ultimo id inserito.

in php nativo gestivo questa cosa con le transactions.
joomla lo fa già nativamente? altrimenti ha qualche funzione apposta?
grazie :)
Iacopo Guarneri

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:insertid() è atomico?
« Risposta #1 il: 16 Gen 2013, 15:04:18 »
Se cerchi nel codice vedi che $database->insertid(); è equivalente a fare mysql_insert_id quindi fai una ricerca in merito ma mi sembra che non sia garantita la mutua esclusione. Se hai bisogno dell'id inserito da una operazione se utilizzi le classi di tipo JTable con store l'id ti ritorna nell'istanza della tabelle e la puoi utilizzare per fare quello che vuoi
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline iacoposk8

  • Appassionato
  • ***
  • Post: 529
    • Mostra profilo
Re:insertid() è atomico?
« Risposta #2 il: 17 Gen 2013, 12:25:43 »
che brutta notizia che mi dai...
mmm... non so se uso jtable, io per fare un insert solitamente scrivo:
Codice: [Seleziona]
$database = &JFactory::getDBO();
$database->setQuery("...mia query...");
$database->query();
$id=$database->insertid();
in questo caso qual'è il modo migliore di gestirlo?
Iacopo Guarneri

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:insertid() è atomico?
« Risposta #3 il: 17 Gen 2013, 12:35:32 »
Mi sembra che dipenda dall'engine che usi per la tabella tipo INNODB ti dovrebbe dare qualche utility in piu ma sinceramente non he ho idea, comunque creare una classa che estende Jtable è facilissimo basta che ne guardi una qualsiasi
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

 



Web Design Bolzano Kreatif