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
