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