Olá,

Pensei na seguinte solução. Veja se atende a sua solução:

CREATE RULE rule_exemplo AS ON INSERT TO usuario DO UPDATE usuario SET
per_id=perfil.per_id FROM perfil WHERE perfil.per_desc='Usuario';

Exemplo de utilização:

INSERT INTO usuario(usu_id,usu_usename) VALUES (1,'JP');

Ao realizar este INSERT automaticamente o campo per_id da tabela usuario é
preenchido com per_id da tabela perfil onde a condição é per_desc='Usuario'.


2009/8/14 Nilson Chagas <nilson.chagas.si...@gmail.com>

> O Fabrizio já respondeu e provavelmente dará certo (testarei assim que
> chegar em casa).
>
> Mas como vc perguntou do objetivo é o seguinte:
>
> Tabela perfil
> Campos per_id, per_descr
>
> Tabela usuario
> Campos usu_id, usu_username, per_id
>
> Na tabela perfil tenho um registro cuja descrição é "Usuário"
>
> Sempre que incluir um novo registro na tabela usuario, o campo per_id
> da tabela deverá ser preenchido com o valor do campo per_id da tabela
> perfil, cuso per_descr seja igual a "Usuário"
>
> --
> []s
> Nilson Chagas - Ubuntu User 25794
> ---
> Visite:
> http://www.avozdoevangelho.com.br -> Peça gratuitamente um curso Bíblico
> Twitter: avozdoevangelho
> http://www.amados.com.br
> http://bbnradio.org -> Ouça a rádio e faça gratuitamente um Curso
> Biblico On-Line
>
>
> 2009/8/13 JotaComm <jota.c...@gmail.com>:
> > Olá, Nilson
> >
> > Fiquei um pouco confuso. Você poderia discorrer um pouco mais sobre qual
> o
> > seu objetivo com esta função?
> >
> > 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??
> >>
> >> --
> >> []s
> >> Nilson Chagas - Ubuntu User 25794
> >> ---
> >> Visite:
> >> http://www.avozdoevangelho.com.br -> Peça gratuitamente um curso
> Bíblico
> >> Twitter: avozdoevangelho
> >> http://www.amados.com.br
> >> http://bbnradio.org -> Ouça a rádio e faça gratuitamente um Curso
> >> Biblico On-Line
> >> _______________________________________________
> >> 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
> > http://www.dextra.com.br/postgres
> >
> > _______________________________________________
> > 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
>

Espero ter ajudado.

[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a