O return old utilizado caso esteja fazendo um "insert", seria para quê? Porque eu particularmente considero uma má implementação..
Em 3 de setembro de 2013 18:16, Rafael Naves <emaildorafaelna...@gmail.com>escreveu: > @Rafael Fialho, > > Valeu pela resposta, mas a estrutura utilizada esta funcionando sem > problemas para outros bancos e outras tabelas. > Tudo acontece quando ativo a trigger da minha tabela do banco. Não consigo > fazer nenhuma inserção no banco por conta do erro. > > @Marcelo Silva, > > Valeu pela resposta, mas não é o caso. A trigger fica lá no banco > normalmente, a aplicação, uso apenas para fazer o insert ou update da > tabela. > > > Verifiquei também que ao fazer apply pela aplicação com a trigger ativa, > não chega nada no log do Postgre. > > > > Em 3 de setembro de 2013 17:50, Marcelo da Silva <marc...@ig.com.br>escreveu: > > >> 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 >> >> > > > -- > ------------------------ > 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