Muito obrigado tiago pela dica e obrigados a todos dessa comunidade que nos ajuda no dia a dia.
2009/8/27 Tiago Adami <[email protected]> > Carlos, acredito que a viabilidade da implementação depende das > especificações do seu projeto. Não fugindo muito do assunto, já vi projetos > onde toda a persistência era gerida dentro de stored procedures em Oracle > Pl/SQL - no mesmo formato desta sua implementação abaixo - bem como todas as > regras de negócio. E eram projetos grandes. > > Acredito que implementar todo o controle da aplicação desta forma facilita > a integração com mais de uma linguagem/IDE, entretanto, se você utilizar > alguma linguagem que tenha um bom suporte à persistência na camada de > controle como Java ou .Net, minha sugestão é utilizá-las ao invés de fazer > estas implementações no banco, deixando em funções ou stored procedures > apenas regras específicas (como tratamento de dados, triggers, > reprocessamentos de saldos, etc) que podem se beneficiar do desempenho por > estar trabalhando "dentro" do banco de dados. > > -- > TIAGO J. ADAMI > http://www.adamiworks.com > adamitj "at" gmail "dot" com > Dois Vizinhos - PR > > 2009/8/26 Grupo Bio Soja - Carlos Eduardo Rodrigues Gonçalves < > [email protected]> > > Conseguir resolvendo desta maneira.... so nao sei se e viavel... alguem >> pode me dizer se e viavel? >> >> >> CREATE OR REPLACE FUNCTION adcionar(nome varchar) >> RETURNS void AS >> $BODY$ >> DECLARE >> idpessoa := (select nextval(pessoa_idpessoa_seq); >> idcliente := (select nextval(cliente_idpessoa_seq); >> BEGIN >> INSERT INTO pessoa VALUES (idpessoa, nome); >> INSERT INTO cliente VALUES (idcliente,idpessoa); >> END; >> $BODY$ >> LANGUAGE 'plpgsql' VOLATILE >> COST 100; >> >> >> >> 2009/8/26 JotaComm <[email protected]> >> >> Olá, >>> >>> Por que suas funções estão retornando NULL, elas deveriam retornar NEW >>> não? >>> >>> >>> 2009/8/25 Grupo Bio Soja - Carlos Eduardo Rodrigues Gonçalves < >>> [email protected]> >>> >>>> eu tenho tentando fazer com trigger mais nao estou conseguindo fazer ele >>>> inserir so os dados pertinentes a tabela... o exemplo que encontrei >>>> >>>> CREATE FUNCTION adicionarpessoa() RETURNS "trigger" >>>> AS $$ >>>> begin >>>> insert into tbPessoa (cdPessoa, tpPessoa, nmPessoa, cpf, dtNascimento) >>>> values (new.cdPessoa, new.tpPessoa, new.nmPessoa, new.cpf, >>>> new.dtNascimento); >>>> return null; >>>> end; >>>> $$ >>>> LANGUAGE plpgsql; >>>> >>>> ------------------------------------------------------------------------------- >>>> CREATE FUNCTION atualizarpessoa() RETURNS "trigger" >>>> AS $$ >>>> begin >>>> update tbPessoa set >>>> tpPessoa = new.tpPessoa, >>>> nmPessoa = new.nmPessoa, >>>> cpf = new.cpf, >>>> dtNascimento = new.dtNascimento >>>> where cdPessoa = old.cdPessoa; >>>> return null; >>>> end; >>>> $$ >>>> LANGUAGE plpgsql; >>>> >>>> ------------------------------------------------------------------------------- >>>> CREATE FUNCTION removerpessoa() RETURNS "trigger" >>>> AS $$ >>>> begin >>>> delete from tbPessoa where cdPessoa = old.cdPessoa; >>>> return null; >>>> end; >>>> $$ >>>> LANGUAGE plpgsql; >>>> >>>> ------------------------------------------------------------------------------- >>>> >>>> ------------------------------------------------------------------------------- >>>> -- SEQUENCE >>>> >>>> ------------------------------------------------------------------------------- >>>> CREATE SEQUENCE tbpessoa_cdpessoa_seq >>>> INCREMENT BY 1 >>>> NO MAXVALUE >>>> NO MINVALUE >>>> CACHE 1; >>>> >>>> ------------------------------------------------------------------------------- >>>> >>>> ------------------------------------------------------------------------------- >>>> -- TABLES >>>> >>>> ------------------------------------------------------------------------------- >>>> CREATE TABLE tbpessoa ( >>>> cdpessoa integer NOT NULL, >>>> nmpessoa character varying(50), >>>> tppessoa integer, >>>> cpf character varying(20), >>>> dtnascimento date >>>> ); >>>> ALTER TABLE ONLY tbpessoa >>>> ADD CONSTRAINT pk_tbpessoa PRIMARY KEY (cdpessoa); >>>> >>>> ------------------------------------------------------------------------------- >>>> CREATE TABLE tbaluno ( >>>> cdpessoa integer DEFAULT nextval('tbpessoa_cdpessoa_seq'::regclass) NOT >>>> NULL, >>>> nmpessoa character varying(50), >>>> tppessoa integer DEFAULT 0, >>>> matricula character varying(20), >>>> cpf character varying(20), >>>> dtnascimento date >>>> ); >>>> ALTER TABLE ONLY tbaluno >>>> ADD CONSTRAINT pk_tbaluno PRIMARY KEY (cdpessoa); >>>> CREATE TRIGGER tgadicionarpessoa >>>> AFTER INSERT ON tbaluno >>>> FOR EACH ROW >>>> EXECUTE PROCEDURE adicionarpessoa(); >>>> CREATE TRIGGER tgatualizarpessoa >>>> AFTER UPDATE ON tbaluno >>>> FOR EACH ROW >>>> EXECUTE PROCEDURE atualizarpessoa(); >>>> CREATE TRIGGER tgremoverpessoa >>>> AFTER DELETE ON tbaluno >>>> FOR EACH ROW >>>> EXECUTE PROCEDURE removerpessoa(); >>>> >>>> esse exemplo e quase que eu quero... so que pra ele funcionar no caso a >>>> tabela aluno tem que ter os mesmos campos e eu nao queria isso.. quem puder >>>> me ajudar por favor... to comecando agora a programar. >>>> >>>> >>>> >>>> >>>> >>>> >>>> 2009/8/25 Joao Cosme de Oliveira Junior <[email protected]> >>>> >>>>> trigger meu jovem, da uma olhada em plpgsql e triggers >>>>> >>>>> >>>>> Em 25/08/2009 às 16:43 horas, [email protected]: >>>>> >>>>> Entaum eu estava vendo sobre linguagem procedural.. vi ate um exemplo >>>>> que faz isso so que de uma maneira quase heranca, so que fica redudancia >>>>> de >>>>> dados... os mesmo campos que tem na tabela pessoa tem que ter em cliente >>>>> para funcionar... gostaria se teria outro jeito de fazer ow se tenho que >>>>> mudar a modelagem de dados... >>>>> >>>>> 2009/8/25 Fabrízio de Royes Mello <[email protected]> >>>>> >>>>>> >>>>>> 2009/8/25 Grupo Bio Soja - Carlos Eduardo Rodrigues Gonçalves < >>>>>> [email protected]> >>>>>> >>>>>>> Gostaria de saber se tem como montar funcoes para insercao de dados, >>>>>>> alteracao e exclusao. >>>>>>> Tenho uma tabela pessoa e uma tabela cliente onde a mesma possui >>>>>>> id_pessoa... estou utilizando php para enviar informacoes para o banco >>>>>>> gostaria de cadastrar ao mesmo tempo os campos pertinentes a pessoa e os >>>>>>> campos pertinetes a cliente.. se alguem tiver um tutorial ou um link >>>>>>> que eu >>>>>>> possa ler... pois ja revirei a net.... muito obrigado a todos >>>>>>> >>>>>>> >>>>>> Podes começar a dar uma olhada em [1] e [2] e se tiveres dúvidas entre >>>>>> novamente em contato que ajudaremos no que for possível: >>>>>> >>>>>> [1] >>>>>> <http://www.postgresql.org/docs/8.4/interactive/server-programming.html> >>>>>> http://www.postgresql.org/docs/8.4/interactive/server-programming.html >>>>>> [2] <http://www.postgresql.org/docs/8.4/interactive/plpgsql.html> >>>>>> http://www.postgresql.org/docs/8.4/interactive/plpgsql.html >>>>>> >>>>>> >>>>>> -- >>>>>> Fabrízio de Royes Mello >>>>>> >> Blog sobre PostgreSQL: <http://fabriziomello.blogspot.com> >>>>>> http://fabriziomello.blogspot.com >>>>>> >>>>>> _______________________________________________ >>>>>> pgbr-geral mailing list >>>>>> [email protected] >>>>>> <https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral> >>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>>>>> >>>>>> >>>>> >>>>> >>>>> "Esta mensagem do SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), >>>>> empresa pública federal regida pelo disposto na Lei Federal nº 5.615, é >>>>> enviada exclusivamente a seu destinatário e pode conter informações >>>>> confidenciais, protegidas por sigilo profissional. Sua utilização >>>>> desautorizada é ilegal e sujeita o infrator às penas da lei. Se você a >>>>> recebeu indevidamente, queira, por gentileza, reenviá-la ao emitente, >>>>> esclarecendo o equívoco." >>>>> >>>>> "This message from SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- >>>>> a government company established under Brazilian law (5.615/70) -- is >>>>> directed exclusively to its addressee and may contain confidential data, >>>>> protected under professional secrecy rules. Its unauthorized use is >>>>> illegal and may subject the transgressor to the law's penalties. If >>>>> you're not the addressee, please send it back, elucidating the failure." >>>>> >>>>> >>>>> _______________________________________________ >>>>> pgbr-geral mailing list >>>>> [email protected] >>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> pgbr-geral mailing list >>>> [email protected] >>>> 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 >>> [email protected] >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >>> >> >> _______________________________________________ >> pgbr-geral mailing list >> [email protected] >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> >> > > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
