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

Responder a