Helio13 Posted August 27, 2012 at 06:48 PM Report Share #473693 Posted August 27, 2012 at 06:48 PM Boa tarde! Estou com uma duvida, e queria ver se alguém me podia ajudar...! Eu estou a fazer um procedimento com transações e gostaria que só acontecesse o COMMIT senão ocorre-se nenhum erro, caso ocorre-se ele fazia o ROLLBACK O que tenho é isto, mas não sei se posso fazer isto...!? BEGIN SAVEPOINT ponto_de_salvamento; DECLARE HANDLER; START TRANSACTION; Call descritores_copy; Call achados_copy; Call adornos_copy; Call ceramicas_copy; Call fauna_copy; Call industrialiticapolida_copy; Call industrialitica_copy; Call industriaossea_copy; Call metais_copy; Call ossoshumanos_copy; IF HANDLER <> O THEN ROLLBACK TO ponto_de_salvamento; ELSE COMMIT; end if; END Alguém me pode ajudar? Cumprimentos Link to comment Share on other sites More sharing options...
M6 Posted August 27, 2012 at 08:19 PM Report Share #473705 Posted August 27, 2012 at 08:19 PM É quase isso. Vê na documentação oficial do MySQL: http://dev.mysql.com/doc/refman/5.0/en/commit.html 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Helio13 Posted August 27, 2012 at 09:07 PM Author Report Share #473709 Posted August 27, 2012 at 09:07 PM Ok, é quase isso...mas alguém me pode ajudar no que está mal? E como posso fazer? É que não estou a conseguir fazer... Obrigado Link to comment Share on other sites More sharing options...
M6 Posted August 28, 2012 at 08:58 AM Report Share #473759 Posted August 28, 2012 at 08:58 AM Essas chamadas fazem commits? Se sim, deixas de poder fazer rollback. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Helio13 Posted August 28, 2012 at 11:04 AM Author Report Share #473776 Posted August 28, 2012 at 11:04 AM Sim, aquelas chamadas fazem commits... Então como posso fazer? Fazer só o commit neste procedimento? Link to comment Share on other sites More sharing options...
M6 Posted August 28, 2012 at 12:28 PM Report Share #473792 Posted August 28, 2012 at 12:28 PM Quando fazes um commit deixas de poder fazer rollback. Só podes fazer commit no fim, de forma a que a transação seja atómica, ou seja, no final, ou fazes commit ou fazes rollback. Podes fazer isso por save points, mas tens fazer um ciclo em que por cada iteração os dados que são commit ou rollback são todos relacionados. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Helio13 Posted August 28, 2012 at 02:06 PM Author Report Share #473802 Posted August 28, 2012 at 02:06 PM Sim, ok...percebi... Não estou a conseguir é tratar o HANDLER... Pois queria que quando houvesse um erro qualquer ele fizesse ROLBACK, senão ocorre nenhum faz COMMIT Como faço essa parte? Pode me ajudar? É que não estou a conseguir fazer... Obrigado Link to comment Share on other sites More sharing options...
M6 Posted August 28, 2012 at 03:10 PM Report Share #473818 Posted August 28, 2012 at 03:10 PM Vê aqui um exemplo de como usares o Handler: http://khanrahim.wordpress.com/2010/05/16/transaction-with-stored-procedure-in-mysql-server/ 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now