Definición de columnas autoincrementales “identity” en DB2

En DB2 es posible crear columnas autoincrementales, es decir, cuyo valor en caso de no definirse en una inserción se vaya incrementando a partir de unos valores definidos. Este tipo de columnas también se pueden definir en SQL Server, y en Oracle se realiza a través de secuencias.

La mejor manera de explicarlo es con un ejemplo: a continuación se muestra la creación de una tabla con una columna autoincremental que es primary key.

Creación de la tabla ESTUDIANTES con la columna ID definida como autoincremental:

CREATE TABLE ESTUDIANTES ( 
     ID_ESTUDIANTE SMALLINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 500, INCREMENT BY 1), 
     NOMBRE VARCHAR(36), 
     APELLIDOS VARCHAR(80), 
     PRIMARY KEY(ID_ESTUDIANTE) )

Inserción de diversos registros sin especificar el campo:

db2 => insert into estudiantes (nombre, apellidos) values ('PEPE','SANCHEZ')

DB20000I The SQL command completed successfully.

db2 => insert into estudiantes (nombre, apellidos) values (‘JOHN’,’SMITH’)

DB20000I The SQL command completed successfully.

 

Seleccionamos los datos para ver los valores asignados al campo ID:

db2 => select * from estudiantes

ID_ESTUDIANTE NOMBRE APELLIDOS

——————— ———— ————–

500 PEPE SANCHEZ

501 JOHN SMITH

2 record(s) selected.

Como se puede observar se han asignado valores consecutivos a partir de 500.