2009/8/13 Nilson Chagas <nilson.chagas.si...@gmail.com> > 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral