Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico JotaComm
Olá,

Neste caso eu optaria por uma Rule, pois é um caso bem simples e não existe
muita complexidade e a rule atende bem a necessidade.

2009/8/14 Nilson Chagas 

> 2009/8/14 JotaComm :
> > Nilson,
> >
> > 2009/8/14 Nilson Chagas 
> >>
> >> 2009/8/14 JotaComm :
> >> > Olá, Nilson
> >> >
> >> > 2009/8/14 Nilson Chagas 
> >> >>
> >> >> Puxa sabia que existia outras formas.
> >> >>
> >> >> Uma pergunta, o CREATE RULE estará funcionando como um "DEFAULT" para
> >> >> o campo no disparo da inserção??
> >> >
> >> > Sim. Toda inserção que estiver na tabela ele chama rule e executa o
> >> > comando
> >> > UPDATE.
> >> >>
> >> >>
> >> >> Se eu informar um id diferente, ele não vai sobregravar?? (só para
> >> >> confirmar)
> >> >
> >> > Irá gerar um nova entrada (linha) na tabela.
> >>
> >> Aqui você me confundiu.
> >>
> >> Se eu fizer um
> >> insert into usuario (usu_id, usu_username) values (1, 'teste')
> >>
> >> Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id
> >> da tabela usuario.
> >>
> >> E se eu fizer
> >> insert into usuario (usu_id, usu_username, per_id) values (1, 'teste',
> 10)
> >>
> >> Ele vai criar uma nova linha??
> >
> > Ao executar desta forma você fara o INSERT porém após esta operação de
> > INSERT é chamada uma RULE de UPDATE e assim o seu registro inserido será
> > atualizado pela RULE.
> >
> > Se você não quiser que ela funcione assim, no final da RULE coloque a
> > seguinte condição AND usuario.per_id IS NULL, assim ele não atualizará o
> > valor do insert quando você informa o para per_id.
>
> Puxa, agora ficou bem claro e vai funcionar como preciso.
>
> Abusando um pouco mais de vocês.
>
> create rule, ou trigger?? Posso ter problema com performance, visto
> que os dois podem fazer o mesmo serviço??
>
>
> --
> []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


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico Nilson Chagas
2009/8/14 JotaComm :
> Nilson,
>
> 2009/8/14 Nilson Chagas 
>>
>> 2009/8/14 JotaComm :
>> > Olá, Nilson
>> >
>> > 2009/8/14 Nilson Chagas 
>> >>
>> >> Puxa sabia que existia outras formas.
>> >>
>> >> Uma pergunta, o CREATE RULE estará funcionando como um "DEFAULT" para
>> >> o campo no disparo da inserção??
>> >
>> > Sim. Toda inserção que estiver na tabela ele chama rule e executa o
>> > comando
>> > UPDATE.
>> >>
>> >>
>> >> Se eu informar um id diferente, ele não vai sobregravar?? (só para
>> >> confirmar)
>> >
>> > Irá gerar um nova entrada (linha) na tabela.
>>
>> Aqui você me confundiu.
>>
>> Se eu fizer um
>> insert into usuario (usu_id, usu_username) values (1, 'teste')
>>
>> Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id
>> da tabela usuario.
>>
>> E se eu fizer
>> insert into usuario (usu_id, usu_username, per_id) values (1, 'teste', 10)
>>
>> Ele vai criar uma nova linha??
>
> Ao executar desta forma você fara o INSERT porém após esta operação de
> INSERT é chamada uma RULE de UPDATE e assim o seu registro inserido será
> atualizado pela RULE.
>
> Se você não quiser que ela funcione assim, no final da RULE coloque a
> seguinte condição AND usuario.per_id IS NULL, assim ele não atualizará o
> valor do insert quando você informa o para per_id.

Puxa, agora ficou bem claro e vai funcionar como preciso.

Abusando um pouco mais de vocês.

create rule, ou trigger?? Posso ter problema com performance, visto
que os dois podem fazer o mesmo serviço??


-- 
[]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


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico JotaComm
Nilson,

2009/8/14 Nilson Chagas 

> 2009/8/14 JotaComm :
> > Olá, Nilson
> >
> > 2009/8/14 Nilson Chagas 
> >>
> >> Puxa sabia que existia outras formas.
> >>
> >> Uma pergunta, o CREATE RULE estará funcionando como um "DEFAULT" para
> >> o campo no disparo da inserção??
> >
> > Sim. Toda inserção que estiver na tabela ele chama rule e executa o
> comando
> > UPDATE.
> >>
> >>
> >> Se eu informar um id diferente, ele não vai sobregravar?? (só para
> >> confirmar)
> >
> > Irá gerar um nova entrada (linha) na tabela.
>
> Aqui você me confundiu.
>
> Se eu fizer um
> insert into usuario (usu_id, usu_username) values (1, 'teste')
>
> Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id
> da tabela usuario.
>
> E se eu fizer
> insert into usuario (usu_id, usu_username, per_id) values (1, 'teste', 10)
>
> Ele vai criar uma nova linha??


Ao executar desta forma você fara o INSERT porém após esta operação de
INSERT é chamada uma RULE de UPDATE e assim o seu registro inserido será
atualizado pela RULE.

Se você não quiser que ela funcione assim, no final da RULE coloque a
seguinte condição AND usuario.per_id IS NULL, assim ele não atualizará o
valor do insert quando você informa o para per_id.

>
>
> Ps.: Perdão pela ignorancia.
>
> --
> []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


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico Nilson Chagas
2009/8/14 JotaComm :
> Olá, Nilson
>
> 2009/8/14 Nilson Chagas 
>>
>> Puxa sabia que existia outras formas.
>>
>> Uma pergunta, o CREATE RULE estará funcionando como um "DEFAULT" para
>> o campo no disparo da inserção??
>
> Sim. Toda inserção que estiver na tabela ele chama rule e executa o comando
> UPDATE.
>>
>>
>> Se eu informar um id diferente, ele não vai sobregravar?? (só para
>> confirmar)
>
> Irá gerar um nova entrada (linha) na tabela.

Aqui você me confundiu.

Se eu fizer um
insert into usuario (usu_id, usu_username) values (1, 'teste')

Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id
da tabela usuario.

E se eu fizer
insert into usuario (usu_id, usu_username, per_id) values (1, 'teste', 10)

Ele vai criar uma nova linha??

Ps.: Perdão pela ignorancia.

-- 
[]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


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico JotaComm
Olá, Nilson

2009/8/14 Nilson Chagas 

> Puxa sabia que existia outras formas.
>
> Uma pergunta, o CREATE RULE estará funcionando como um "DEFAULT" para
> o campo no disparo da inserção??


Sim. Toda inserção que estiver na tabela ele chama rule e executa o comando
UPDATE.

>
>
> Se eu informar um id diferente, ele não vai sobregravar?? (só para
> confirmar)


Irá gerar um nova entrada (linha) na tabela.

>
>
> --
> []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/14 JotaComm :
> > 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 
> >>
> >> 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 :
> >> > 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 
> >> >>
> >> >> 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
> >
> >
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgres

Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico Nilson Chagas
Puxa sabia que existia outras formas.

Uma pergunta, o CREATE RULE estará funcionando como um "DEFAULT" para
o campo no disparo da inserção??

Se eu informar um id diferente, ele não vai sobregravar?? (só para confirmar)

-- 
[]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/14 JotaComm :
> 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 
>>
>> 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 :
>> > 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 
>> >>
>> >> 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
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico JotaComm
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 

> 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 :
> > 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 
> >>
> >> 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


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico Nilson Chagas
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 :
> 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 
>>
>> 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


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-13 Por tôpico Fabrízio de Royes Mello
2009/8/13 Nilson Chagas 

> 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


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-13 Por tôpico JotaComm
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 

> 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