Em 22 de setembro de 2011 11:25, Marcelo Silva (IG) <[email protected]>escreveu:
> Pessoal eu uso a seguinte instrucao para adicionar e recuperar uma
> sequence:
>
> select nextval('mv_bordero_seq'::regclass) as cod_bor
>
> Funciona belezinha, acontece que nessa chamada ele incrementa a sequencial
>
> Eu precisava recuperar a sequencia da transacao naquele tabela sem
> incrementar, e tambem não ter aquele conflito de varios usuarios dando
> inserts
>
> No MySQL temos a funcao last_insert_id
>
> select last_insert_id() as cod_gen from gen_codigo limit 1
>
> Essa funcao pega o ultimo ID de uma determinada tabela, mas sempre
> relacionada a sessao do usuario, dessa forma nao tem como duplicar, mesmo
> que ja tenha sido incrementado por outro usuario.
>
> Como voces tratam isso no Postgres?
>
>
E uma sessão após vc executar um *nextval* vc pode usar o *currval* para
retornar o valor corrente do último incremento na sequence. Ex:
BEGIN;
INSERT INTO bordero VALUES (nextval('mv_bordero_seq'), ...);
...
INSERT INTO bordero_tabela_filha VALUES
(nextval('mv_bordero_tabela_filha_seq'), currval('mv_bordero_seq'), ...);
...
COMMIT;
--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral