2009/8/13 Nilson Chagas <[email protected]>
> Pessoal,
>
> Não sou dba, e estou apenas gatinhando no postgresql.
>
> Preciso de uma trigger no before insert da tabela (ou talvez alguém
> tenha até uma outra solução).
>
> Estou tentando algo assim:
>
> CREATE OR REPLACE FUNCTION fc_perfil_usuario()
> RETURNS "trigger" AS
> $BODY$begin
>
> -- verifica se o campo per_id é nulo
> IF NEW.per_id IS NULL THEN
> -- busca o id na tabela perfil
> SELECT per_id into perfil FROM perfil where per_descr =
> 'Usuário';
> END IF;
>
> -- campo per_id da tabela usuário
> NEW.per_id := perfil;
>
>
> RETURN NEW;
>
> end$BODY$
> LANGUAGE 'plpgsql' VOLATILE;
> COMMENT ON FUNCTION fc_perfil_usuario() IS 'Se o campo perfil do
> usuario estiver nulo a função busca o id da descrição usuario';
>
>
> Qual é a maneira correta de se fazer isto??
>
>
Não seria mais adequado algo do tipo:
CREATE OR REPLACE FUNCTION fc_perfil_usuario() RETURNS "trigger" AS
$BODY$
DECLARE
iPerfil integer;
BEGIN
-- verifica se o campo per_id é nulo
IF NEW.per_id IS NULL THEN
-- busca o id na tabela perfil
SELECT per_id INTO iPerfil FROM perfil WHERE per_descr = 'Usuário';
-- campo per_id da tabela usuário
NEW.per_id := iPerfil;
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Cordialmente,
--
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