GARANTIR DESCONTO

Fórum trigger com select e if #426146

14/10/2012

0

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
Lucas Monteiro

Lucas Monteiro

Responder

Posts

15/10/2012

Alisson Santos

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á.???
Responder

Gostei + 0

15/10/2012

Lucas Monteiro

se não existir documento com status 1 ele adiciona, se existir não faz nada
Responder

Gostei + 0

15/10/2012

Lucas Monteiro

fiz dessa forma tambem.
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
Responder

Gostei + 0

15/10/2012

Tiago

Lucas, coloque >=0 .... do jeito que o código está, ele só vai inserir quando a linha estiver vazia.
Responder

Gostei + 0

15/10/2012

Lucas Monteiro

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
Responder

Gostei + 0

16/10/2012

Alisson Santos

Você debugou a sua trigger ou disparou ele de dentro do gerenciador do banco de dados.?
Responder

Gostei + 0

16/10/2012

Lucas Monteiro

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
Responder

Gostei + 0

17/10/2012

William

Existe algum tipo de trigger na tabela historico, mas precisamento no eventos Before Update ou After Insert?

Vc testou esse INSERT isoladamente?
Responder

Gostei + 0

17/10/2012

Lucas Monteiro

testei isolada sim funciono perfeitamente,

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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar