Olá, Que tal fazer um tratamento assim:
Em 16 de julho de 2010 10:22, Torgge <tor...@gmail.com> 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 <jota.c...@gmail.com> escreveu: > > Olá, >> >> >> >> Em 16 de julho de 2010 08:56, Torgge <tor...@gmail.com> 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 >>> pgbr-geral@listas.postgresql.org.br >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >>> >> >> []s >> -- >> JotaComm >> http://jotacomm.wordpress.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 > > []s -- JotaComm http://jotacomm.wordpress.com
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral