Interrogazione database MySQL

BoG3
Ciao a tutti,
ho una domanda da porvi:
devo eseguire 2 query su un database (su 2 tabelle diverse).
Devo pero' farlo in modo che se una delle 2 query fallisce alora vengano annullati in automatico pure gli effetti della query precedente. come si fa? c'è un modo automatico? o devo farlo a mano?

grazie a tutti

Risposte
gundamrx91-votailprof
Non è molto chiara la questione... Che intendi per annullare l'effetto delle query? Sono degli aggiornamenti (insert/update/delete) delle due tabelle? O cosa?

BoG3
Scusami! Mi spiego meglio:
immaginiamo di avere 2 tabelle:


    ATTREZZO (id_attrezzo, nome, ....)
    MANSIONE (id_mansione, id_attrezzo, ...)

    [/list:u:3ntozhp0]

    Immaginiamo che voglio inserire nella tabella con una Insert:
    ATTREZZO: "00001, martello, ..."

    e nella tabella MESTIERE vado ad inserire tutti i mestieri dove viene impiegato un martello, quindi nella tabella
    MESTIERE inserisco una qualcosa come: "falegname, martello, ...."


    Il mio problema è questo: supponiamo che inserisco la prima query: cioè il martello nella propria tabella, passo d inserire il mestiere (o i mestieri) che encessitano del martello nella tabella MESTIERI ma ad un certo punto la transazione fallisce. Io vorrei poter annullare anche l'effetto della transazione precedente andata a buon fine, evitando così di avere inseritro il martello tra gli attrezzi ma non aver alcun mestiere che ne faccia uso.

    Spero di essere stato piu' chiaro :)

    Spero di ricordarmi bene ma qualcuno mi aveva parlato o forse ne ho sentito parlare di sfuggita da gualcuno apropposito di:
    start transaction
    end transaction

gundamrx91-votailprof
Si infatti gestisci il tutto con le transazioni. Nello specifico non conosco MySQL, ma sicuramente ci sono le istruzioni per attivare la gestione delle transazioni: begin o start, commit e rollback; se qualcosa va storto fai la rollback altrimenti fai la commit. Per la verifica della correttezza dell'aggiornamento delle tabelle penso ci sia la possibilità di controllare un return code, così da permetterti di eseguire o meno la commit/rollback della transazione.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.