Rollback non funziona con UPDATE

Ciao, ho un problema con le transizioni, in pratica dopo aver avviato la transizione eseguo due select, una insert e alla fine un update. Se una determinata condizione non mi soddisfa eseguo un ROLLBACK altrimenti COMMIT. Il problema è che se devo eseguire il ROLLBACK tutte le query vengono giustamente ignorate mentre quella UPDATE viene comunque eseguita, come mai?

inviato 6 anni fa
MGbyte78
X 0 X

Le tabelle sono TUTTE InnoDB? Puoi riportare il codice dello script che effettua la transazione? Ci deve essere sicuramente un errore.

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X

Grazie Gianni mi hai messo il dubbio e in pratica mi hai risolto già il problema perchè le tabelle erano tutte InnoDb tranne quella dove dovevo effettuare l' UPDATE. Tutta colpa di una importazione in locale da altervista che ha le tabelle tutte MyIsam. Ora in locale ho cambiato in InnoDB e funziona tutto.

Un' altra cosa, in un vecchio POST mi consigliasti di usare FOR UPDATE nelle transizioni, visto che all 'interno della mia transizione ho due select, una insert e un' UPDATE, devo usarlo in tutte le query o solo nella prima select? Tuttavia ho notato che se inserisco FOR UPDATE anche nella query dove effettuo l' UPDATE mi dà errore.....

risposto 6 anni fa
MGbyte78
X 0 X

Il FOR UPDATE si inserisce solo nelle SELECT per impedire ad altre transazioni di modificare i dati appena letti.

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X

Ok, quindi avendo all' interno della mia transizione due SELECT che si riferiscono a due tabelle diverse, dovrò inserirlo ad entrambi il FOR UPDATE se non ho capito male.

Scusami ancora ma avrei una curiosità:

Ma nelle transizioni se due utenti arrivano nello stesso istante di tempo ad effettuare la prima query (nel mio caso la SELECT), con quale criterio si stabilisce chi deve rimanere in attesa della fine della transizione che avviene con il COMMIT?

risposto 6 anni fa
MGbyte78
X 0 X

E' impossibile che due utenti premano il submit nello stesso istante, ci sarà sempre uno che lo preme prima, anche solo di un microsecondo.

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X

OK, GRAZIE.

risposto 6 anni fa
MGbyte78
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili