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

Responder a