Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Rollbak não funciona


Ilma

Pergunta

Estou usando a versão Express Edition do SQL Server 2005 e ao criar uma transação, o rollback não funciona.

Exemplo:

BEGIN TRANSACTION

insert into cursos values(20,'Curso20',6,3)

insert into cursos values(21,'Curso21',6,3)

insert into cursos values(22,'Curso22',6,1)

insert into cursos values(23,'Curso23',6,3)

if (@@error<>0)

ROLLBACK

else

COMMIT

Neste exemplo, o terceiro insert não está de acordo com a integridade referencial da tabela.

Nenhum dos inserts deveria então ser feitos, porém os 3 outros são executados.

Como solucionar esta questão?

Desde já, agradeço as colaborações....

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Oi pessoal, consegui resolver o problema. A variável @@error é setada para 0 a cada comando SQL de uma transação, por isto, ao avaliá-la após os insert´s, ela estava com o valor 0. Para solucionar fiz o seguinte:

BEGIN TRANSACTION

insert into cursos values(1,'Curso1',6,3)

IF (@@ERROR <> 0) GOTO ERRO

insert into cursos values(2,'Curso2',6,3)

IF (@@ERROR <> 0) GOTO ERRO

insert into cursos values(3,'Curso3',6,1)

IF (@@ERROR <> 0) GOTO ERRO

insert into cursos values(4,'Curso4',6,3)

IF (@@ERROR <> 0) GOTO ERRO

COMMIT

RETURN

ERRO:

PRINT 'Erro em algum insert!'

ROLLBACK

RETURN

Editado por Ilma
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...