Em 21 de setembro de 2015 10:00, Flavio Henrique Araque Gurgel < fha...@gmail.com> escreveu:
> Galera, >> > > Bom dia, coloque sempre um assunto em suas mensagens, por favor. > > Estou tendo um problema com uma sequence criada automaticamente no banco >> de dados utilizando o tipo de campo SERIAL. Ao tentar usar a sequence, >> recebo a seguinte mensagem: >> >> sql> select currval('revisions_id_seq') >> [2015-09-21 09:53:10] [55000] ERROR: currval of sequence >> "revisions_id_seq" is not yet defined in this session >> > > Você precisa sempre gerar um valor para sua sequência antes de chamar a > função curval. > No seu caso, acho que você precisa fazer um > SELECT nextval('revisions_id_seq'); > e depois você pode chamar curval quantas vezes precisar. > > Alguma idéia? Pesquisei um montão de lugares, e só aparece página de PHP >> fazendo Go Horse na solução. Nada efetivo para que na hora de criar a >> sequence no cliente eu não tenha o mesmo erro. >> > > Não sei o que é "Go Horse". Mas a solução taí em cima. > > Preciso uma solução que fique dentro da DDL para não ter problemas. >> > > Nada muda na sua DDL, só suas DML e DQL. > > > Talvez o que o colega esteja querendo é obter o valor da sequence após um insert, sendo isso, acrescente no final do comando insert a instrução "RETURNING campo_da_sequence" Supondo que o campo que receberá a sequence chama-se idcodigo, o comando ficaria assim: INSERT tabela (campos) VALUES (valores) RETURNING idcodigo; Lembrando que o campo, no meu exemplo idcodigo, não precisa estar presente no comando insert, ou seja, não precisa conter na instrução, apenas no returning. []s Danilo
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral