SQL AUTO INCREMENTCampos


Auto-increment genera un número único cuando se inserta un nuevo registro en la tabla.


Campo AUTO INCREMENT

Normalmente queremos crear automáticamente el valor del campo clave primaria cada vez que se inserta un nuevo registro.

Podemos crear un campo auto-increment en una tabla.


Sintaxis para MySQL

La siguiente sentencia SQL define la columna "ID" en la tabla "Persons" como un campo de clave primaria auto-increment:

CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

MySQL utiliza la palabra clave AUTO_INCREMENT para realizar la tarea de auto-increment.

De forma predeterminada, el valor inicial de AUTO_INCREMENT es 1 y se incrementa en 1 por cada nuevo registro.

Para que la secuencia AUTO_INCREMENT comience con otro valor, use la siguiente sintaxis SQL:

ALTER TABLE Persons AUTO_INCREMENT=100

Para insertar un nuevo registro en la tabla "Persons", no es necesario especificar un valor para la columna "ID" (se agregará automáticamente un valor único):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

La sentencia SQL anterior inserta un nuevo registro en la tabla "Persons". A la columna "ID" se le asignará un valor único. La columna "FirstName" se establecerá en "Lars" y la columna "LastName" se establecerá en "Monsen".


Sintaxis para SQL Server

La siguiente sentencia SQL define la columna "ID" en la tabla "Persons" como un campo de clave primaria auto-increment:

CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

MS SQL Server utiliza la palabra clave IDENTITY para realizar la tarea de auto-increment.

En el ejemplo anterior, el valor inicial de IDENTITY es 1 y se incrementa en 1 por cada nuevo registro.

Sugerencia:Para especificar que la columna "ID" comience en 10 y se incremente en 5, cambie identity a IDENTITY(10,5).

Para insertar un nuevo registro en la tabla "Persons", no es necesario especificar un valor para la columna "ID" (se agregará automáticamente un valor único):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

La sentencia SQL anterior inserta un nuevo registro en la tabla "Persons". A la columna "ID" se le asignará un valor único. La columna "FirstName" se establecerá en "Lars" y la columna "LastName" se establecerá en "Monsen".


Sintaxis para Access

La siguiente sentencia SQL define la columna "ID" en la tabla "Persons" como un campo de clave primaria auto-increment:

CREATE TABLE Persons
(
ID Integer PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

MS Access utiliza la palabra clave AUTOINCREMENT para realizar la tarea de auto-increment.

De forma predeterminada, el valor inicial de AUTOINCREMENT es 1 y se incrementa en 1 por cada nuevo registro.

Sugerencia:Para especificar que la columna "ID" comience en 10 y se incremente en 5, cambie autoincrement a AUTOINCREMENT(10,5).

Para insertar un nuevo registro en la tabla "Persons", no es necesario especificar un valor para la columna "ID" (se agregará automáticamente un valor único):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

La sentencia SQL anterior inserta un nuevo registro en la tabla "Persons". A la columna "ID" se le asignará un valor único. La columna "FirstName" se establecerá en "Lars" y la columna "LastName" se establecerá en "Monsen".


Sintaxis para Oracle

En Oracle, el código es un poco más complejo.

Debe crear el campo auto-increment mediante un objeto sequence (dicho objeto genera una secuencia de números).

Utilice la siguiente sintaxis de CREATE SEQUENCE:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

El código anterior crea un objeto sequence llamado seq_person que comienza en 1 y se incrementa en 1. Dicho objeto almacena en caché 10 valores para mejorar el rendimiento. La opción cache especifica cuántos valores de secuencia se almacenarán para acceder más rápido.

Para insertar un nuevo registro en la tabla "Persons", debemos usar la función nextval (dicha función obtiene el siguiente valor de la secuencia seq_person):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

La sentencia SQL anterior inserta un nuevo registro en la tabla "Persons". A la columna "ID" se le asignará el siguiente número de la secuencia seq_person. La columna "FirstName" se establecerá en "Lars" y la columna "LastName" se establecerá en "Monsen".


Otras extensiones