Para que servem o rollback e o commit?

SQL

09/11/2016

Olá galera,


sempre no SQL, usei as queries para fazer o que preciso. Fiz uso do CRUD sempre quando precisei

Nunca tive tanto interesse em ver uma maneira de otimizar minhas queries, pois as mesmas já me atendiam.

Queria saber se o rollback e o commit poderiam me ajudar em alguma coisa.
Tiago Dias

Tiago Dias

Curtidas 0

Melhor post

Fabio Parreira

Fabio Parreira

09/11/2016

Depende muito cara. Se a sua "queries" tiver que fazer um simples CRUD, em uma única e tabela e um único registro, o rollback ou commit vai ser inútil pra você, até porque se der algum erro, não vai ter alteração nenhuma no dado. Usamos o rollback ou commit quando vamos fazer uma sequência de comandos que compõem um comando maior ou quando vamos manipular uma quantidade de dados maior.
Um exemplo: Se vou fazer um update na tabela cliente em um único registro, não necessita abrir transação no banco, pois isto o SQL faz automaticamente. Agora supondo que você terá que trabalhar com mais de uma tabela, como por exemplo, você vai atualizar um pedido e já na sequência você precisa atualizar o estoque, ai sim você precisa de abrir uma transação, pois se der erro na atualização do pedido, o SQL volta todas as alterações feitas anteriormente ao seu estado anterior.

Otimização de "queries" vai muito além de criar transações, pois estas travam as páginas de dados, então muito cuidado ao mexer com transações. O bom seria você revisar seus índices e medir a performance da "querie" executada e ai sim identificar melhorias na mesma.
GOSTEI 2

Mais Respostas

Ricardo Araujo

Ricardo Araujo

09/11/2016

Caro colega,

O uso Rollback :
Server para quando você estiver fazendo uma Inclusão no seu Sistema e no decorrer deste processo deu alguma coisa errada, neste caso o processo, não realizar a inclusão dos dados.

O Uso Commit :
Neste caso quando esta realizando uma Inclusão no seu Sistema, e o processo percorre normalmente sem nenhum erro, isto quer dizer quer dizer que o commit ira persistir os dados.
GOSTEI 1
Tiago Dias

Tiago Dias

09/11/2016

pow interessante...

Então se eu usar uma query minha e após ela usar o rollbak, irá reverter o processo?
GOSTEI 0
Fabio Parreira

Fabio Parreira

09/11/2016

Sim. Tudo o que foi feito depois que a transação foi aberta, ao rodar o rollback, volta tudo para a situação anterior.
Geralmente eu deixo minhas queries estruturadas assim:

DECLARE @ERRO AS VARCHAR(MAX)

DECLARE @ERRO AS VARCHAR(MAX)
BEGIN
BEGIN TRY
BEGIN TRANSACTION
BEGIN
--TODO CÓDIGO VAI AQUI DENTRO
END
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
SET @ERRO = ERROR_MESSAGE()
RAISERROR(@ERRO,16,1)
END CATCH
GOSTEI 0
POSTAR