Em Dom, 2015-02-22 às 10:29 -0300, Matheus de Oliveira escreveu:
> 
> 
> 2015-02-21 15:11 GMT-02:00 Matheus Saraiva
> <[email protected]>:
> 
>         Nesse caso, a ultima coluna (genitor) dos filhos que estão em
>         array_filhos seria ignorada, certo?
> 
> 
> 
> Eu não incluiria ela no array.


Mas para isso eu teria que criar manualmente os tipos compostos e eu
estou utilizando o tipo gerado com a tabela, para agilizar. 

> 
> 
> Pensando no problema em si, não me parece que a lista possa ser
> *muito* grande, outra forma de modelar o problema seria um loop na
> aplicação para cada filho. Exemplo (pseudo-código):
> 
> 
>     cn.execute("BEGIN;");
> 
>     cn.execute("SELECT fnInsertCliente(?, ?, ....)", [<parametros>]);
> 
>     stmt = cn.prepareStatement("SELECT fnInsertFilho(?, ?, ...)");
> 
>     for each filho f:
> 
>         stmt.execute([<parametros do filho f>]);
> 
>     cn.execute("COMMIT");
> 
> 
> 
> Assim você usa PREPARED STATEMENTS para já aliviar o processo de
> parser/planning, e transação para garantir atomicidade.
> 
> 
> Várias opções, fica a seu critério escolher a melhor.
> 

Minha intenção com as funções plpgsql é justamente reduzir o uso de SQL
no desenvolvimento da aplicação.
Acho que a melhor forma para meu caso é deixar como estava, cada filho
recebendo o código do pai. De uma visão a nível de SQL parece
redundante, mas a aplicação se encarregará de repassar o código do pai
para os filhos.

A dúvida que estou no momento é. E se o cliente não tiver nenhum filho?
Ou seja, se a aplicação mandar um arry_filhos vazio?
Seria criado um novo registro de filho com os campos todos nulos ou
nenhum registro seria gravado na tabela filhos?

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a