2009/4/6 Fabrício <[email protected]>
>
> Presciso de ajuda . Tenho a seguinte situação : Trabalho com dois schemas
> o Public e o Personaliza , onde o public é o Geral e Personaliza é o Schema
> onde guardo as funções personalizadas para o Cliente com esta situação meu
> problema é o seguinte :
> Como faço para quando for criar uma função no schema public verificar se
> a mesma existe no schema personaliza e quando isto acontecer abortar a
> atualização . Ja tentei fazer uma Triggers na tabela pg_proc e fazer uma
> role mas nenhum das duas deram resultado com trigger ele não aceita pois é
> ima tabela de catalogo. Por favor peço ajuda para tentar solucionar este
> problema !!
>
>
Caro Fabricio,
No PostgreSQL realmente não sei se é possível implementar o que você deseja,
mas você pode resolver isso na implementação da tua PL, verificando no
inicio dela se existe a mesma funcao no schema "Personaliza" e caso isso
ocorra você desvia para a função desse schema.
Poderia ser algo do tipo:
create or replace function public.fn_minhafuncao(integer, date, varchar)
returns integer as
$$
begin
-- Aqui verifica se a funcao 'fc_minhafuncao' esta no schema 'personaliza'
if exists(select * from pg_proc join pg_namespace on pg_namespace.oid =
pg_proc.pronamespace where pg_namespace.nspname = 'personaliza' and
pg_proc.proname = 'fn_minhafuncao') then
return personaliza.fn_minhafuncao($1, $2, $3);
end if;
-- Aqui continua a funcao do public
end;
$$ language plpgsql;
Creio que isso pode resolver a tua questao de utilizar uma ou outra...
Espero ter ajudado.
--
Fabrízio de Royes Mello
>> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral