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

Responder a