Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/02/2010, 10:22
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problema campo serial no incrementa completamente cuando insert con genera

Cita:
entonces por alguna razon la secuencia queda en un valor por ejemplo de 9203 y cuando voy a realizar el siguiente insert me da error por el primary key
Porque cuando se tiene un campo serial y se inserta un valor manualmente, la secuencia no se modifica. La secuencia solo se modifica en el momento en que se inserta automáticamente haciendo uso del campo.

Entonces... los primeros valores te los inserta bien, pero al tratar de volver a insertar valores ya existentes, te va a dar un problema de primary keys.

Esto lo puedes comprobar con el siguiente ejemplo en el cual si utilizamos por defecto el valor de la secuencia

Código SQL:
Ver original
  1. pruebas=> SELECT *FROM generando;
  2.  nro | campo1 | campo2
  3. -----+--------+--------
  4. (0 filas)
  5. pruebas=> INSERT INTO generando (campo1,campo2) SELECT generate_series(1,5),2;
  6. INSERT 0 5
  7. pruebas=> INSERT INTO generando (campo1,campo2) SELECT generate_series(1,5),2;
  8. INSERT 0 5
  9. pruebas=> INSERT INTO generando (campo1,campo2) SELECT generate_series(1,5),2;
  10. INSERT 0 5
  11. pruebas=> SELECT *FROM generando;
  12.  nro | campo1 | campo2
  13. -----+--------+--------
  14.    1 |      1 |      2
  15.    2 |      2 |      2
  16.    3 |      3 |      2
  17.    4 |      4 |      2
  18.    5 |      5 |      2
  19.    6 |      1 |      2
  20.    7 |      2 |      2
  21.    8 |      3 |      2
  22.    9 |      4 |      2
  23.   10 |      5 |      2
  24.   11 |      1 |      2
  25.   12 |      2 |      2
  26.   13 |      3 |      2
  27.   14 |      4 |      2
  28.   15 |      5 |      2
  29. (15 filas)
  30.  
  31. pruebas=>

Saludos wpersei
__________________
Without data, You are another person with an opinion.
W. Edwads Deming