trigger com select e if
fiz uma trigger numa tabela para quando inserir dado nela ver se na outra tabela tem dados com status 1 senão ela deveria inserir um novo dado naquela tabela, porem não funciona como deveria alguem poderia me ajudar?
CREATE trigger creditos_bi0 for creditos
active before insert position 0
AS
begin
if(not exists(select 1 from historico h where h.status_his = 1)) then
insert into historico(DATABE_HIS,status_his) values(Cast(''TODAY'' As Date),1);
end
CREATE trigger creditos_bi0 for creditos
active before insert position 0
AS
begin
if(not exists(select 1 from historico h where h.status_his = 1)) then
insert into historico(DATABE_HIS,status_his) values(Cast(''TODAY'' As Date),1);
end
Lucas Monteiro
Curtidas 0
Respostas
Alisson Santos
14/10/2012
pelo que entendi quer verificar sempre se existe algum documento com status 1, caso exista vai inserir o documento.
Agora se existir mais de um documento com status um como funcionará.???
Agora se existir mais de um documento com status um como funcionará.???
GOSTEI 0
Lucas Monteiro
14/10/2012
se não existir documento com status 1 ele adiciona, se existir não faz nada
GOSTEI 0
Lucas Monteiro
14/10/2012
fiz dessa forma tambem.
mas mesmoa ssim ele não insere a nova linha
AS
declare variable cont INT;
begin
select count(*) from historico h where h.status_his = 1 into cont ;
if(cont = 0) then
insert into historico(DATABE_HIS,status_his) values(Cast('TODAY' As Date),1);
end
mas mesmoa ssim ele não insere a nova linha
GOSTEI 0
Tiago
14/10/2012
Lucas, coloque >=0 .... do jeito que o código está, ele só vai inserir quando a linha estiver vazia.
GOSTEI 0
Lucas Monteiro
14/10/2012
mas é essa mesmo a intenção.. só quando estiver ZERO,
deixa eu tenta explica melhor.
to na tabela de CREDITOS, inseri uma linha, entao ele vai ver se tem algum historico ativo se tem ele vai na tabela CREHIS e add o codigo do CREDITO e do HISTORICO[esta em outra trigger e funcionando perfeitamente isso], se não tivesse ele insere uma nova linha na tabela de historico e loco em seguida dispara a trigger que faz a junção dos codigo de CREDITOS e HISTORICO em CREHIS
deixa eu tenta explica melhor.
to na tabela de CREDITOS, inseri uma linha, entao ele vai ver se tem algum historico ativo se tem ele vai na tabela CREHIS e add o codigo do CREDITO e do HISTORICO[esta em outra trigger e funcionando perfeitamente isso], se não tivesse ele insere uma nova linha na tabela de historico e loco em seguida dispara a trigger que faz a junção dos codigo de CREDITOS e HISTORICO em CREHIS
GOSTEI 0
Alisson Santos
14/10/2012
Você debugou a sua trigger ou disparou ele de dentro do gerenciador do banco de dados.?
GOSTEI 0
Lucas Monteiro
14/10/2012
ja sim, ela entra no if certinho quando tem zero e não entra quando há, o problema é que não aparece a linha inserida em historico
GOSTEI 0
William
14/10/2012
Existe algum tipo de trigger na tabela historico, mas precisamento no eventos Before Update ou After Insert?
Vc testou esse INSERT isoladamente?
Vc testou esse INSERT isoladamente?
GOSTEI 0
Lucas Monteiro
14/10/2012
testei isolada sim funciono perfeitamente,
e tem essa trigger no before insert [unica por enquanto] em historicos:
e tem essa trigger no before insert [unica por enquanto] em historicos:
AS BEGIN if (NEW.id_his is NULL) then NEW.id_his = GEN_ID(gen_historico_id, 1); END
GOSTEI 0