É o seguinte, eu criei uma trigger para alterar alguns campos dentro da própria tabela da trigger para evitar retrabalho na codificação, até aí tudo bem.
Nesta trigger eu tenho uma função que retorna a chave primária de uma tabela nossa para fins de logs, nesse caso, para saber que realizou o cancelamento, mas ao atribuir o valor que essa função retorna para o campo da tabela da trigger, o campo continua nulo (MAS ELE RETORNA!, Fiz um teste inserindo o registro que deveria ser atribuindo, inserindo-o numa tabela de teste, e foi inserido com sucesso!). Segue a trigger:
DECLARE
vidlogorigem integer;
vgeralog boolean = false;
BEGIN
IF tg_op = 'UPDATE' THEN
vgeralog = (OLD.sit <> 'CC') AND (NEW.sit = 'CC');
ELSEIF tg_op = 'INSERT' THEN
vgeralog = NEW.sit = 'CC';
END IF;
IF vgeralog THEN
vidlogorigem = (select getidlogorigem());
insert into teste(id) values (vidlogorigem);
NEW.teste = vidlogorigem;
NEW.datacancel = clock_timestamp();
END IF;
RETURN NEW;
END;
A função "getidlogorigem" é a que me retorna a chave primária duma tabela de usuários.
Eu utilizo isto em outros lugares que funcionam tranquilamente.
Pergunta
souzacruz001
Boa tarde, pessoal!
É o seguinte, eu criei uma trigger para alterar alguns campos dentro da própria tabela da trigger para evitar retrabalho na codificação, até aí tudo bem.
Nesta trigger eu tenho uma função que retorna a chave primária de uma tabela nossa para fins de logs, nesse caso, para saber que realizou o cancelamento, mas ao atribuir o valor que essa função retorna para o campo da tabela da trigger, o campo continua nulo (MAS ELE RETORNA!, Fiz um teste inserindo o registro que deveria ser atribuindo, inserindo-o numa tabela de teste, e foi inserido com sucesso!). Segue a trigger:
DECLARE
vidlogorigem integer;
vgeralog boolean = false;
BEGIN
IF tg_op = 'UPDATE' THEN
vgeralog = (OLD.sit <> 'CC') AND (NEW.sit = 'CC');
ELSEIF tg_op = 'INSERT' THEN
vgeralog = NEW.sit = 'CC';
END IF;
IF vgeralog THEN
vidlogorigem = (select getidlogorigem());
insert into teste(id) values (vidlogorigem);
NEW.teste = vidlogorigem;
NEW.datacancel = clock_timestamp();
END IF;
RETURN NEW;
END;
A função "getidlogorigem" é a que me retorna a chave primária duma tabela de usuários.
Eu utilizo isto em outros lugares que funcionam tranquilamente.
Obrigado!
Link para o comentário
Compartilhar em outros sites
0 respostass 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.