Ilma Postado Maio 20, 2009 Denunciar Share Postado Maio 20, 2009 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) ROLLBACKelse COMMITNeste 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.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Ilma Postado Maio 21, 2009 Autor Denunciar Share Postado Maio 21, 2009 (editado) 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 TRANSACTIONinsert into cursos values(1,'Curso1',6,3) IF (@@ERROR <> 0) GOTO ERROinsert into cursos values(2,'Curso2',6,3) IF (@@ERROR <> 0) GOTO ERROinsert into cursos values(3,'Curso3',6,1) IF (@@ERROR <> 0) GOTO ERROinsert into cursos values(4,'Curso4',6,3) IF (@@ERROR <> 0) GOTO ERROCOMMITRETURNERRO:PRINT 'Erro em algum insert!'ROLLBACK RETURN Editado Maio 21, 2009 por Ilma Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Ilma
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
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.