Início > SQL Server > Table Variables e Transactions

Table Variables e Transactions

Hoje um amigo perguntou sobre o conceito de transações no SQL Server,

 

Ele queria fazer o seguinte, chamar um processo para fazer alguns cálculos, depois gravar o resultado disso em uma tabela, e depois efetuar um rollback, pois o processo seria de simulação.

 

A dúvida era que quando ele efetuava um rollback o SQL fazia um rollback de tudo, inclusive no insert que ele havia feito para pegar o resultado da simulação.

Ou seja, ele queria guardar o valor da simulação em uma tabela para exibir na tela.

 

Mesmo não concordando muito com a lógica aplicada, sugeri para ele usar uma variável de tabela para guardar o resultado, já que ela não faz parte do escopo de uma transação portanto não afetada pelo rollback.

 

Por ex:

 

BEGIN TRAN

 

DECLARE @TMP TABLE (LETRA CHAR(2))

             

INSERT INTO @TMP(LETRA)

VALUES(‘EU’)

 

ROLLBACK TRAN

 

SELECT LETRA + ‘ ‘ + ‘CONTINUO AQUI!’ FROM @TMP

 

Uma outra solução seria usar SavePoints, mas também não acho que seria legal, maasss fica a dica sobre as variáveis do tipo table.

Anúncios
Categorias:SQL Server
  1. Demétrio
    28 de outubro de 2008 às 9:16

    Fabiano, usando ou não o begin tran – rollback, dá no mesmo. Por isso, não sei porque ele quer fazer isso.
     
    Abraços

  2. Fabiano Neves
    28 de outubro de 2008 às 11:27

    Ele quer fazer um processo e depois cancelar, mas mesmo cancelando o que ele fez, ele quer guardar o resultado para exibir como se o usuário estivesse feito uma simulação…Por isso ele usa o Begin tran, faz o processo, e volta tudo ao normal… mas pegando o resultado na tabela variavel.

  3. Demétrio
    30 de outubro de 2008 às 18:24

    Entendi, meio louco mas entendi.
     
    Abraços

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: