Olha vou dar um "xutão" aqui... Se estiver executando sua Trigger num ZQuery normal, possivelmente ele vai dar erro porque o ZQuery precisa de um retorno do SQL Em outras palavras, ele serve pra SELECT * FROM TABELA Assim como o ZUpdate serve pra UPDATE :-) Pra executar Procedures e Triggers do banco você deve executar diretamente no SQL direto
Exemplo: var zqrLocal: TZQuery; begin zqrLocal := TZQuery.Create(nil); zqrLocal.Connection := SeuZconecta; zqrLocal.Close; zqrLocal.SQL.Add('SEU SQL'); zqrLocal.ExecSQL; FreeAndNil(zqrLocal); end; Veja ai se funciona Marcelo Silva --------------------------------------- Em 3 de setembro de 2013 17:35, Rafael Fialho Corrêa <r.fia...@ibest.com.br>escreveu: > Já passei por algo parecido sim, Rafael. > Normalmente o erro estava no próprio SQL repassado ao Zeos. > Eu utilizo sempre esta estrutura para escrita/edição de dados: > "select * from tabela where id_tabela = :id_tabela" > Neste caso, ao efetuar insert ou update, o sistema sempre se comporta de > maneira correta. > > De qualquer forma, creio que deves verificar as propriedades do teu > TZQuery, antes de mais nada, e verificar se a estrutura de query repassada > ao componente está de maneira simples e "filtrada". > > > Em 3 de setembro de 2013 17:06, Rafael Naves <emaildorafaelna...@gmail.com > > escreveu: > >> Boa tarde a todos, >> >> Eu tenho uma trigger simples para preencher alguns campos da minha tabela >> a cada alteração de registro: >> >> *CREATE TRIGGER tabela_teste_trigger_ui >> * >> * BEFORE INSERT OR UPDATE * >> * ON public.tabela_teste FOR EACH ROW * >> * EXECUTE PROCEDURE public.atualiza_campos_ultimos();* >> >> *>>>>> Ela aciona uma a função abaixo:* >> >> *CREATE OR REPLACE FUNCTION public.atualiza_campos_ultimos( >> * >> *)* >> *RETURNS trigger AS* >> *$body$* >> *BEGIN >> * >> * >> * >> * if (TG_OP = 'INSERT') then* >> * operacao := 'I';* >> * else* >> * operacao := 'A'; * >> * end if;* >> * * >> * new.DATA_ALTERACAO:= current_timestamp;* >> * new.TIPO_OPERACAO := operacao; >> * >> * * >> * if (TG_OP = 'INSERT') then >> * >> * return old;* >> * else* >> * return new;* >> * end if;* >> * >> * >> *END; >> * >> *$body$* >> *LANGUAGE 'plpgsql'* >> *VOLATILE* >> *RETURNS NULL ON NULL INPUT* >> *SECURITY INVOKER* >> *COST 100;* >> >> *Problemática:* >> >> Ao executar pelo banco de dados, através de scripts funciona normalmente, >> no entanto, quando é executada via aplicação usando Delphi 2007 + Zeos >> 7.0.4 eu recebo o erro: >> >> *'0 record(s) updated. Only one record should have been updated.'* >> * >> * >> Em minhas pesquisas e testes realizado pude perceber que o problema esta >> relacionado com o update dos campos da tabela, fato é que, ao desativar a >> trigger a aplicação consegue gravar os dados normalmente na tabela. >> >> Alguém já passou por isso ou percebeu alguma coisa na função que possa >> estar ocasionando o problema? >> >> Obrigado. >> >> >> >> -- >> ------------------------ >> Rafael M. Naves >> Analista/Programador >> (31)9861-4047 (*novo!*) >> (31)8636-8910 >> http://www.twitter.com/navesrafael >> http://www.rafaelnaves.com >> >> >> _______________________________________________ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> >> > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Marcelo Silva ---------------------------------------------------------------- Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral