lunes, 25 de octubre de 2010

PostgreSQL: Control de Secuencias

En PostgreSQL se pueden crear tablas con "primary key" autoincrementables, como se pude observar en el siguiente ejemplo.

create table alumnos (
   id        SERIAL       not null,
   nombre varchar(255) NULL,
   constraint pk_beneficios primary key (id));


Esto creara una secuencia autoincrementable para la "primary key" como se observa a continuación.

 id      integer        not null valor por omisión nextval('alumnos_id_seq'::regclass)

En ocaciones es necesario observar o modificar los valores de la secuencia, para realizar estas operaciones, se pueden utilizar las siguientes sentencias.

  • "SELECT last_value FROM nombre_secuencia;": Retorna el último valor de la secuencia.
  • "SELECT nextval('nombre_secuencia');": Retorna el valor del último número de la secuencia y lo incrementa en 1.
  • "SELECT setval ('nombre_secuencia', valor);": Asigna el valor a la secuencia, obligando a nextval a retornar (valor + 1).
  • "SELECT setval('nombre_secuencia',valor,true);": Funciona del mismo modo que la sentencia anterior.
  • "SELECT setval('nombre_secuencia',valor,false);": Asigna el valor a la secuencia, obligando a nextval a retornar (valor).
  • "SELECT currval('nombre_secuencia');": Retorna el valor del último número de la secuencia.
El nombre_secuencia puede ser remplazado por "alumno_id_seq" del primer ejemplo, mientras que el valor debe ser un entero mayor que 0 (cero).

"Gracias, por compartir tus conocimientos"

2 comentarios: