create or replace function "funcInsertClientes"( cliente integer,
f_depends "Pessoas"[] ) returns boolean as 

$BODY$

        insert into "Pessoas" -- Insere os dependentes na tabela de
Pessoas
        (
            nome,
            telefone,
            email,
            endereco,
            imagem
        ) select * from unnest(f_depends);

        inset into "Dependentes" -- Insere os dependentes na tabela de
dependentes
        (
            pessoa,     -- Código da pessoa (Tabela de Pessoas) FK
            titular        -- Código da pessoa (Tabela de Pessoas) FK
        ) ....................................
        
    end;

$BODY$ language plpgsql volatile cost 100;

Na função, foi inserido na tabela Pessoas (uma tabela genérica para todo
tipo de pessoa), todos os dependentes de um titular. O segundo insert,
agora na tabela dependentes, deve adicionar, o código do dependente
(tabela de Pessoas) e o código do titular.
O ID do titular é tranquilo, pois já está vindo em forma de parâmetro
para a função, mas como pegar o ID dos dependentes que foram cadastrado
na tabela genérica de pessoas?
A solução que pensei, foi pegar o last_value da sequência de Pessoas,
antes e depois de inserir os dependentes. Assim, através da diferença eu
saberia os ID que acabaram de ser cadastrados. Então, com um laço de
repetição eu faria os inserts em dependentes.
Porém, não sei se essa seria a forma mais elegante de se fazer.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a