Em Sex, 2015-02-20 às 16:08 -0200, Matheus de Oliveira escreveu:
> 
> 
> 2015-02-20 16:01 GMT-02:00 Matheus Saraiva
> <[email protected]>:
> 
>         funcInsertCliente(f_nome varchar,  f_telefone varchar,
>         f_endereco integer, f_datanasc, f_filhos Filhos[]) RETURN
>         boolean
>         
>         BEGIN
>             INSERT INTO Clientes
>             (
>                 nome,
>                 telefone,
>                 endereco,
>                 datanasc
>             ) VALUES($1, $2, $3, $4);
>             
>             INSERT INTO Filhos
>             (
>                 nome,
>                 idade,
>                 genitor,
>             ) SELECT * FROM unnest(f_filhos);
>                 
>             RETURN TRUE;
>                 
>             EXCEPTION
>             
>                 WHEN NOT_NULL_VIOLATION THEN
>                     RAISE NOTICE 'Required filds are blank';
>                     RETURN FALSE;
>                 WHEN UNIQUE_VIOLATION THEN
>                     RAISE NOTICE 'One or more unique keys were
>         violated';
>                     RETURN FALSE;
>                 WHEN RESTRICT_VIOLATION THEN
>                     RAISE NOTICE 'One or more restricts were
>         violated';
>                     RETURN FALSE;
>         END;
> 
> 
> 
> 
> Tirando o fato da sintaxe não ser válida, funcionaria, seria inserido
> primeiro em "Clientes" depois em "Filhos", entretanto me parece que
> você esqueceu de incluir a inserção da chave de "Clientes" em
> "Filhos".
> 

No exemplo, o campo 'genitor' de Filho é que faz referência a tabela
Clientes.

Aproveitando o mesmo email, como ficaria a sintaxe se já existisse uma
função para inserir filhos e eu queira chamar essa função ao invés de
fazer um INSERT em Filhos? Como eu passaria o resultado de SELECT * FROM
unnest(f_filhos); para a função funcInsertFilhos?

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

Responder a