Re: Obtener "Curval()" de inserción masiva

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Rodriguez Fernando <rodriguez(at)ort(dot)edu(dot)uy>
Cc: Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com>, Raul Andres Duque <ra_duque(at)yahoo(dot)com(dot)mx>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Obtener "Curval()" de inserción masiva
Date: 2008-02-28 11:46:28
Message-ID: 20080228114628.GB4764@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

>>> Raul Andres Duque wrote:
>>>
>>>> Mi duda es: Después de ejecutar esta sentencia (INSERT), cómo puedo
>>>> saber TODOS los valores de secuencia generados?

Sorry, hay una manera trivial de saber los valores devueltos por la
secuencia:

insert into duque
select nextval('duque_a_seq')
from generate_series(1, 20)
returning a;

Es facil demostrar que funciona bien concurrentemente: usas una
subconsulta que se intercale con otra sesion. Por ej.

alvherre=# insert into duque select a from (select nextval('duque_a_seq') as a, pg_sleep(1) from generate_series(1, 20)) foo returning a;
a
----
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
58
60
62
64
(20 rows)

INSERT 0 20

y en otra sesion, que eche a andar cuando esa llevaba ya algun tiempo:

alvherre=# insert into duque select a from (select nextval('duque_a_seq') as a, pg_sleep(1) from generate_series(1, 20)) foo returning a;
a
----
57
59
61
63
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
(20 rows)

INSERT 0 20

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Raul Andres Duque 2008-02-28 13:48:13 Re: [pgsql-es-ayuda] Obtener "Curval()" de inserción masiva
Previous Message Alejandro D. Burne 2008-02-28 11:12:38 Re: Re: [pgsql-es-ayuda] Obtener "Curval()" de inserción masiva