Eu consigo utilizar os camandos COMMIT TRANSACTION ou ROLLBACK TRANSACTION sem a necessidade de declarar o begin no iníco do comando?
Eu consigo utilizar os camandos COMMIT TRANSACTION ou ROLLBACK TRANSACTION sem a necessidade de declarar o begin no iníco do comando?
Oi, Thiago, tudo bem?
Peço desculpas pela demora em retornar.
Não é possível utilizar os comandos COMMIT
e ROLLBACK
sem a declaração do bloco com BEGIN
no início do comando.
Os comandos COMMIT
e ROLLBACK
são utilizados para confirmar ou desfazer uma transação no PostgreSQL, respectivamente. Nesse sentido, para que o PostgreSQL compreenda a qual bloco esses comandos fazem referência, é necessário delimitá-lo com BEGIN
na parte inicial.
Para uma melhor compreensão, imagine o seguinte caso: você está em uma livraria online buscando por um livro que deseja muito ler, após encontrá-lo, você o adiciona ao carrinho de compras e parte para a compra em si. No entanto, antes de finalizar todo o processo, seu amigo envia uma mensagem dizendo que comprou exatamente esse livro de presente para você. Ufa, ainda bem que a sua compra não foi finalizada! Basta apenas cancelá-la que ficará tudo certo!
Nesse cenário, foi importante, antes de cancelar a compra, iniciá-la. Se a etapa inicial fosse pulada, a última não poderia ocorrer — e é exatamente isso que ocorre com as transações: comandos que confirmam ou desfazem uma ação (como COMMIT
e ROLLBACK
) só podem ocorrer quando definimos o início desta mesma ação (com BEGIN
)!
Espero ter ajudado, Thiago. Caso surjam novas dúvidas, fico à disposição.
Abraços!