Fórum RollBack e Commit #39248
08/10/2003
0
create trigger tI_TbAdicItemOrcPedVnd on dbo.TbAdicItemOrcPedVnd for Insert as
begin
declare @errno int,
@errmsg varchar(255)
if Not Exists(Select * From TbOrcPedVnd, Inserted
Where
Inserted.CodEmpr = TbOrcPedVnd.CodEmpr and
Inserted.NrOrcPedVnd = TbOrcPedVnd.NrOrcPedVnd)
begin
select @errno = 30007,
@errmsg = ´Nao e incluir os dados de adicionais financeiros do item pois o documento de pre-venda nao existe.´
goto error
end
if Not Exists(Select * From TbItem, Inserted
Where
Inserted.CodEmpr = TbItem.CodEmpr and
Inserted.CodItem = TbItem.CodItem)
begin
select @errno = 30007,
@errmsg = ´Nao e possivel inserir o adicional financeiro pois o Produto informado nao existe.´
goto error
end
return
error:
raiserror @errno @errmsg
rollback transaction
end
---------
Tenho um Label chamado ´Error´ que ao gerar algum erro ele faz um ´GOTO´ para o ´Error´ e dentro deste error eu tenho um RollBack, nesta caso como funciona no Firebird esta trigger?
Obrigado.
Halexmaciel
Curtir tópico
+ 0Posts
08/10/2003
Afarias
as triggers e stored procedures no IB ou FB ocorrem no contexto de uma transação e não possuem qualquer controle sobre esta!
.. ou seja:: vc não pode iniciar ou finalizar com commit ou rollback uma transação dentro do código de uma trigger ou stored proc.
T+
Gostei + 0
13/10/2003
Torres Delphi
Procurei bastante sobre esse assunto, e encontrei algumas solucoes para essa deficiencia, em alguns exemplo que vi, no Delphi, a procedure era chamada com o uso de ´try...except´
[]´s
Gostei + 0
10/06/2015
Rafael Mattos
As Triggers são executadas no contexto de sua transação, elas são tratadas como parte da operação atual, ou seja, as ações de uma Trigger que resultou em uma transação que é ROLLBACKed, será revertida também.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)