Transações em SQL Server são um conjunto de procedimentos que são executados num banco de dados, que para o usuário é visto como uma única ação.

Ou seja, deve garantir a Atomicidade (Ou executa todos os passos corretamente ou não executa em caso de falha em algum dos passos).

O SQL Server fornece três maneira de tratar transações, que são: Transações de autoconfirmação, Transações explícitas e Transações implícitas.

Transações de autoconfirmação

Nas transações de autoconfirmação, cada instrução é uma transação por si só. Quando uma instrução produz um erro, automaticamente a instrução é revertida, senão ela é confirmada.

Por padrão o SQL Server trabalha de forma nativa com as Transações de Autoconfirmação, onde qualquer instrução T-SQL é considerada uma transação e, após sua execução, o SQL Server realiza automaticamente a confirmação desta instrução.

Isso representa que, a partir desse momento, qualquer linha de comando ou instrução encaminhada ao SQL Server será reconhecida, analisada, processada e confirmada. Veja:

   CREATE TABLE OPCOES (
   ID INT NOT NULL PRIMARY KEY,
   COR VARCHAR(20) NOT NULL,
   NOME VARCHAR(20) NULL);    
   ...
   INSERT INTO OBJETO VALUES (1, 'Rosa', 'Jaqueline');
   INSERT INTO OBJETO VALUES (2, 'Azul', 'Júnior');
   INSERT INTO OBJETO VALUES (3, null, 'Vanessa');

No exemplo acima o campo ‘COR’ não aceita valor NULL. Isso irá gerar um aviso de erro, no entanto as outras duas instruções serão processadas normalmente.

Transações explícitas

Nesse tipo de transação o desenvolvedor define onde a transação é inicializada e onde ela é finalizada ou revertida. As instruções utilizadas são: BEGIN TRANSACTION (para iniciar uma transação), COMMIT TRANSACTION (para confirmar uma transação) e ROLLBACK TRANSACTION (para reverter uma transação). Veja:

BEGIN TRY
    BEGIN TRAN 
        INSERT INTO OBJETO VALUES (1, 'Rosa', 'Jaqueline');
        INSERT INTO OBJETO VALUES (2, 'Azul', 'Júnior');
        INSERT INTO OBJETO VALUES (3, null, 'Vanessa');
        COMMIT TRAN; 
    END TRY
 
BEGIN CATCH
    SELECT ERROR_NUMBER() AS "ERROR_NUMBER",
               ERROR_SEVERITY() AS "ERROR_SEVERITY",
               ERROR_STATE() AS "ERROR_STATE",
               ERROR_PROCEDURE() AS "ERROR_PROCEDURE",
               ERROR_LINE() AS "ERROR_LINE",
               ERROR_MESSAGE() AS "ERROR_MESSAGE"
 
    RAISERROR('Erro na transação', 14, 1)
 
    ROLLBACK TRAN; 
END CATCH;

No código anterior foi usado uma rotina de tratamento de erro TRY e CATCH para verificar erro em alguma instrução.

A rotina anterior não incluiu nenhum registro na tabela OPCOES porque não é permitido valor NULL, ou seja, a reversão da instrução foi executada com sucesso.

Para melhorar o tratamento de erro o CATCH foi adicionado para trazer informações sobre o erro e uma mensagem de erro.

Transações implícitas

Transações implícitas são transações que ocorrem automaticamente quando enviamos os comandos INSERT, UPDATE e DELETE para o banco de dados. Estas transações são chamadas de implícitas porque não precisamos indicar o início através de um comando BEGIN TRANSACTION ou um término através do comando COMMIT ou ROLLBACK.

Para usar esse tipo de transação precisamos ativa-la no SQL Server usando o código:

SET IMPLICIT_TRANSACTIONS ON;

Verificar quantas transações em aberto existem:

SELECT @@TRANCOUNT

Crie uma tabela de teste:

CREATE TABLE TESTE (ID INT PRIMARY KEY);
   SELECT @@TRANCOUNT;

Execute um comando INSERT simples, execute um SELECT e verifique quantas transações em aberto existem:

INSERT INTO TESTE VALUES (5);
   SELECT * FROM TESTE;
   SELECT @@TRANCOUNT;

Execute um ROOLBACK para reverter tudo, desde o INSERT até a criação da tabela:

ROLLBACK TRAN;
   SELECT @@TRANCOUNT;

E, para finalizar, desative as transações implícitas:

SET IMPLICIT_TRANSACTIONS OFF;
Conheça o curso de Segurança em Redes de Computadores e entenda os diversos tipos de ataques que existem, bem como as peças do quebra-cabeça que integram a defesa de uma rede, entre elas: Firewall, IPS, Proxy, Anti-Spam, Anti-vírus, Anti-Malware, VPN, Sandboxing, NAC, etc.

CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS DETALHES:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *