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


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


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 jota.c...@gmail.com:
 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


___
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 nilson.chagas.si...@gmail.com

 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 jota.c...@gmail.com:
  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
 
 
 ___
 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 jota.c...@gmail.com:
 Olá, Nilson

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

 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
Nilson,

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

 2009/8/14 JotaComm jota.c...@gmail.com:
  Olá, Nilson
 
  2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com
 
  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 jota.c...@gmail.com:
 Nilson,

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

 2009/8/14 JotaComm jota.c...@gmail.com:
  Olá, Nilson
 
  2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com
 
  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-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 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


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