Osvaldo Kussama wrote:
> 2009/3/19 Thiago M. Figueiredo <tmarquesfiguer...@yahoo.com.br>:
>   
>> Osvaldo Kussama wrote:
>>     
>>> 2009/3/19 Thiago M. Figueiredo <tmarquesfiguer...@yahoo.com.br>:
>>>
>>>       
>>>> Olá Pessoa,
>>>>
>>>> Tudo bem?
>>>>
>>>> Estou fazendo um sistema de controle de contato mais agora pintou uma
>>>> duvida cruel eu insiro e ao mesmo tempo tenho que retornar um resultado
>>>> dos dados que insiro, isso é era simples em outros sistemas que já tinha
>>>> feito porque existia um dado que deveria ser unico na base e deveria ser
>>>> preenchido e era obrigatório (CPJ) ou seja eu inseria e a traves deste
>>>> dado realizava busca e retornava os dados agora sistema que estou
>>>> fazendo é diferente pois o unico dado que deve ser unico é o dado serial
>>>> que é gerado pelo próprio postgres automaticamente queria saber se
>>>> existe algum esquema para inserir e trazer o id deste usuário no
>>>> postgres que é o serial que falei que é criado automaticamente.
>>>>
>>>>
>>>>         
>>> Utilize a cláusula RETURNING. Veja:
>>> http://www.postgresql.org/docs/current/interactive/sql-insert.html
>>>
>>>
>>>       
>> Opa Muito obrigado pela ajuda mais ainda to com duvida.
>>
>> Não seria assim:
>> INSERT INTO table (coluna1, caluna2) VALUES ('valor1', 'valor3')
>> RETURNING id_linha; -- Id linha é o serial
>>
>>     
>
>
> Sim, veja o exemplo:
> bdteste=# CREATE TEMP TABLE foo(
> bdteste(# id SERIAL PRIMARY KEY,
> bdteste(# bar text);
> NOTA:  CREATE TABLE criará sequência implícita "foo_id_seq" para
> coluna serial "foo.id"
> NOTA:  CREATE TABLE / PRIMARY KEY criará índice implícito "foo_pkey"
> na tabela "foo"
> CREATE TABLE
> bdteste=# INSERT INTO foo(bar) VALUES ('a') RETURNING id;
>  id
> ----
>   1
> (1 registro)
>
> INSERT 0 1
> bdteste=# INSERT INTO foo(bar) VALUES ('b') RETURNING id;
>  id
> ----
>   2
> (1 registro)
>
> INSERT 0 1
> bdteste=# SELECT * FROM foo;
>  id | bar
> ----+-----
>   1 | a
>   2 | b
> (2 registros)
>
> --
> -- Para o caso de um tipo serial você tem a opção de utilizar a função currval
> --
> bdteste=# INSERT INTO foo(id,bar) VALUES (DEFAULT, 'c');
> INSERT 0 1
> bdteste=# SELECT currval('foo_id_seq');
>  currval
> ---------
>        3
> (1 registro)
>
> bdteste=# SELECT * FROM foo;
>  id | bar
> ----+-----
>   1 | a
>   2 | b
>   3 | c
> (3 registros)
>
> Osvaldo
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>   
Opa Muito obrigado pela ajuda entendi, então meu problema pode ser outro.

Qual versão de postgres você tem instalada?
pois quando dou esse comando ele me retorna o seguinte erro:

ERRO:  syntax error em ou próximo a "RETURNING" at character 42

Pelo que entendi ele não esta entendendo o comando RETURNING certo?

Muito Obrigado


-- 
------------------------------------
Thiago M. Figueiredo
E-Mail: thi...@pzpzine.com
E-Mail: tmarquesfiguer...@yahoo.com.br
Cel: (55 11) 8627-5343
http://www.pzpzine.com
http://www.thiagofigueiredo.com
'Open Source' o conhecimento é do mundo! :P
Usar software proprietario R$ 450,00 com MasterCard, usar software livre não 
tem preço.... :D
Software livre pensamento proprietário 

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a