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

Responder a