• User Newbie

    Mysql + Stored Procedures

    ciao a tutti,

    ho un piccolo problema con mysql....vengo subito al dunque

    sto creando una stored procedures che esegue due insert in due tabelle diverse.....fin qui tutto ok

    se per caso la seconda insert non dovesse andare a buon fine, la prima viene eseguita ugualmente, e non voglio che questo accada. Siccome le due insert dovrebbero essere dipendenti l'una dall'altara, vorrei che se per qualche errore la seconda insert non venisse eseguita, neanche la prima deve essere eseguita.

    io uso anche postgres come db e tutto questo funziona alla grande.

    faccio un esempio su come faccio in postgres

    creao una tabella di nome prova a cui attribuisco un campo prova VARCHAR NOT NULL, successivamente creo un'altra tabella a cui attribuisco un campo prova_2 VARCHAR e sempre NOT NULL

    dopo creo la mia funzione

    BEGIN

    insert into prova(prova) VALUES ('prova');
    insert into prova_2(prova_2) VALUES (null);

    RETURN 0;

    END

    come potete vedere dalla seconda insert, non passo nessun valore e questo mi genererà un errore perchè quel campo non può contenere valori nulli e la insert non viene effettuata, di conseguenza neanche la prima viene effettuata perchè finchè la funzione non ottiene il return 0, le insert non le esegue.

    Invece su Mysql la stessa identica cosa non va....cioè mi generà l'errore della seconda insert ma la prima la esegue lo stesso...

    vi prego aiutatemi è importante.....non so dove sbattere più la testa.


  • User Attivo

    Prova in questo modo:

    BEGIN ATOMIC
    insert into prova(prova) VALUES ('prova');
    insert into prova_2(prova_2) VALUES (null);
    END

    Ciao!


  • User Newbie

    grazie per la risposta, ho provato quello che hai detto ma non funziona

    ATOMIC non viene riconosciuto, solitamente le istruzioni me le evidenzia in blu, invece atomic no.

    nonso più che fare......qualche altra idea?