Campo AUTO INCREMENT SQL
El auto-incremento genera un número único cuando se inserta un nuevo registro en la tabla.
Campo AUTO INCREMENT
Generalmente, esperamos que se cree automáticamente el valor del campo clave principal cada vez que se inserte un nuevo registro.
Podemos crear un campo auto-incrementable en la tabla.
Sintaxis para MySQL
La siguiente sentencia SQL define la columna "P_Id" de la tabla "Persons" como clave principal auto-incrementable:
CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) )
MySQL utiliza la palabra clave AUTO_INCREMENT para ejecutar la tarea de auto-incremento.
Por defecto, el valor de inicio de AUTO_INCREMENT es 1, y cada nuevo registro aumenta 1.
Para que la secuencia AUTO_INCREMENT comience en otro valor, utilice 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 "P_Id" (se agregará automáticamente un valor único):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
La siguiente declaración SQL insertará un nuevo registro en la tabla "Persons"."P_Id" se asignará un valor único."FirstName" se establecerá en "Bill", la columna "LastName" se establecerá en "Gates".
Sintaxis para SQL Server
La siguiente sentencia SQL define la columna "P_Id" de la tabla "Persons" como clave principal auto-incrementable:
CREATE TABLE Persons ( P_Id int PRIMARY KEY IDENTITY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
MS SQL utiliza la palabra clave IDENTITY para ejecutar la tarea de auto-incremento.
Por defecto, el valor de inicio de IDENTITY es 1, y cada nuevo registro aumenta 1.
Para establecer que la columna "P_Id" comience en 20 y aumente en 10, cambie identity a IDENTITY(20,10):
Para insertar un nuevo registro en la tabla "Persons", no es necesario especificar un valor para la columna "P_Id" (se agregará automáticamente un valor único):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
La siguiente declaración SQL insertará un nuevo registro en la tabla "Persons"."P_Id" se asignará un valor único."FirstName" se establecerá en "Bill", la columna "LastName" se establecerá en "Gates".
Sintaxis para Access
La siguiente sentencia SQL define la columna "P_Id" de la tabla "Persons" como clave principal auto-incrementable:
CREATE TABLE Persons ( P_Id int 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 ejecutar la tarea de auto-incremento.
Por defecto, el valor de inicio de AUTOINCREMENT es 1, y cada nuevo registro aumenta 1.
Para establecer que la columna "P_Id" comience en 20 y aumente en 10, cambie autoincrement a AUTOINCREMENT(20,10):
Para insertar un nuevo registro en la tabla "Persons", no es necesario especificar un valor para la columna "P_Id" (se agregará automáticamente un valor único):
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
La siguiente declaración SQL insertará un nuevo registro en la tabla "Persons"."P_Id" se asignará un valor único."FirstName" se establecerá en "Bill", la columna "LastName" se establecerá en "Gates".
Sintaxis para Oracle
En Oracle, el código es un poco más complejo.
Debe crear un objeto de secuencia para crear un campo auto-incremental (el objeto genera una secuencia de números).
Use la siguiente sintaxis CREATE SEQUENCE:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
El siguiente código crea un objeto de secuencia llamado seq_person, que comienza en 1 y aumenta en 1. El objeto caché 10 valores para mejorar el rendimiento. La opción CACHE especifica cuántos valores de secuencia se almacenan para mejorar la velocidad de acceso.
Para insertar un nuevo registro en la tabla "Persons", debemos usar la función nextval (la función recupera el siguiente valor de la secuencia seq_person):
INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
La siguiente declaración SQL insertará un nuevo registro en la tabla "Persons"."P_Id" se asignará el siguiente número de la secuencia seq_person."FirstName" se establecerá en "Bill", la columna "LastName" se establecerá en "Gates".