Re: [pgbr-geral] Valor do campo no Before Insert
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/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
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/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
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
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
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
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/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
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] Valor do campo no Before Insert
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