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.
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 |