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

Reply via email to