- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Mysql + Stored Procedures
-
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.
-
Prova in questo modo:
BEGIN ATOMIC
insert into prova(prova) VALUES ('prova');
insert into prova_2(prova_2) VALUES (null);
ENDCiao!
-
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?