2009/3/19 Thiago M. Figueiredo <[email protected]>:
> Osvaldo Kussama wrote:
>> 2009/3/19 Thiago M. Figueiredo <[email protected]>:
>>
>>> 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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a