Olá,

Em 16 de julho de 2010 11:21, Torgge <[email protected]> escreveu:

> Mas isso não é exclusão física ? Vou tentar alterar a exception others para
> essa que me passou foreign_key_violation.
>


Sim. E para excluir fisicamente. Agora se você quer excluir logicamente faça
um tratamento diferente, pois apenas coloquei uma idéia de como você poderia
trabalhar.




> Em 16 de julho de 2010 10:38, JotaComm <[email protected]> escreveu:
>
> Olá,
>>
>> Que tal fazer um tratamento assim:
>>
>> Em 16 de julho de 2010 10:22, Torgge <[email protected]> escreveu:
>>
>> Isso é para exclusão lógica, meu campo ativo controla isso. Porém faço o
>>> delete para verificar se o registro esta linkado a alguma
>>> outra tabela, se o comando delete der exception quer dizer que não posso
>>> exclui-lo então "não posso exclui-lo logicamente tb",
>>> se não der exception no delete, quer dizer que "eu posso exclui-lo
>>> logicamente", o problema é que esta dando exception no
>>> update. Então sempre esta retornando false, quando executo essa function
>>> no debug do (EMS Postgres) ele retorna true,
>>> mas quando executo ele normalmente retorna false.
>>>
>>
>> Que tal fazer um tratamento assim:
>>
>> CREATE OR REPLACE FUNCTION f_delete(INTEGER)
>>
>> RETURNS BOOLEAN AS $$
>>
>> BEGIN
>>
>>     BEGIN
>>
>>     DELETE FROM tabela WHERE codigo=$1;
>>
>>     EXCEPTION WHEN foreign_key_violation THEN
>>
>>         RAISE NOTICE 'Registro % não pode ser excluído.',$1;
>>
>>         RETURN FALSE;
>>
>>     END;
>>
>> RAISE NOTICE 'Registro pode ser excluído: %',$1;
>>
>> RETURN TRUE;
>>
>> END;
>>
>> $$ LANGUAGE PLPGSQL RETURNS NULL ON NULL INPUT;
>>
>>
>>> Em 16 de julho de 2010 09:05, JotaComm <[email protected]> escreveu:
>>>
>>> Olá,
>>>>
>>>>
>>>>
>>>> Em 16 de julho de 2010 08:56, Torgge <[email protected]> escreveu:
>>>>
>>>> Bom dia.
>>>>> Uma dúvida com a uma funcion:
>>>>> CREATE OR REPLACE FUNCTION padrao.moeda_d
>>>>> (
>>>>>   nid  integer
>>>>> )
>>>>> RETURNS boolean AS
>>>>> $$
>>>>> begin
>>>>>     if (nid is not null) then
>>>>>         savepoint p1;
>>>>>
>>>>>             delete from padrao.moeda
>>>>>                 where padrao.moeda.id = nid;
>>>>>
>>>>>        rollback to p1;
>>>>>
>>>>>         update padrao.moeda set
>>>>>             ativo = 0,
>>>>>             datalt = now()
>>>>>         where id = nid;
>>>>>
>>>>>     end if;
>>>>>
>>>>>     RETURN TRUE;
>>>>>
>>>>> exception
>>>>>     when others then
>>>>>         RETURN false;
>>>>> end;
>>>>> $$
>>>>> LANGUAGE 'plpgsql'
>>>>> VOLATILE
>>>>> CALLED ON NULL INPUT
>>>>> SECURITY INVOKER
>>>>> COST 100;
>>>>>
>>>>> Ela sempre retorna false, quando passa pelo update da exception, alguma
>>>>> sugestão de como fazer corretamente ?
>>>>>
>>>>
>>>> Sempre que cair na excpetion vai retornar false. Não isso que você quer?
>>>>
>>>> O que você quer fazer exatamente? Não entendi muito bem sua idéia, pois
>>>> você faz um delete e depois faz o rollback para o seu savepoint definido e
>>>> depois faz um update. Poderia explicar sua idéia, assim fica mais fácil
>>>> ajudarmos.
>>>>
>>>>>
>>>>> _______________________________________________
>>>>> pgbr-geral mailing list
>>>>> [email protected]
>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>
>>>>>
>>>>
>>>> []s
>>>> --
>>>> JotaComm
>>>> http://jotacomm.wordpress.com
>>>>
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> [email protected]
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>> []s
>> --
>> JotaComm
>> http://jotacomm.wordpress.com
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>

[]s
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a