SQL AUTO INCREMENT Field
Auto-increment generates a unique number when a new record is inserted into the table.
AUTO INCREMENT field
We usually want the value of the primary key field to be automatically created each time a new record is inserted.
We can create an auto-increment field in the table.
Syntax for MySQL
The following SQL statement defines the "P_Id" column in the "Persons" table as an auto-increment primary key:
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 uses the AUTO_INCREMENT keyword to perform the auto-increment task.
By default, the starting value of AUTO_INCREMENT is 1, and each new record increments by 1.
To make the AUTO_INCREMENT sequence start with a different value, use the following SQL syntax:
ALTER TABLE Persons AUTO_INCREMENT=100
To insert a new record into the "Persons" table, we do not need to specify a value for the "P_Id" column (a unique value will be added automatically):
INSERT INTO Persons (FirstName, LastName) VALUES ('Bill', 'Gates')
The above SQL statement will insert a new record into the "Persons" table. "P_Id" will be assigned a unique value. "FirstName" will be set to "Bill", and the "LastName" column will be set to "Gates".
Syntax for SQL Server
The following SQL statement defines the "P_Id" column in the "Persons" table as an auto-increment primary key:
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 uses the IDENTITY keyword to perform the auto-increment task.
By default, the starting value of IDENTITY is 1, and each new record increments by 1.
To specify that the "P_Id" column starts at 20 and increments by 10, change identity to IDENTITY(20,10):
To insert a new record into the "Persons" table, we do not need to specify a value for the "P_Id" column (a unique value will be added automatically):
INSERT INTO Persons (FirstName, LastName) VALUES ('Bill', 'Gates')
The above SQL statement will insert a new record into the "Persons" table. "P_Id" will be assigned a unique value. "FirstName" will be set to "Bill", and the "LastName" column will be set to "Gates".
Syntax for Access
The following SQL statement defines the "P_Id" column in the "Persons" table as an auto-increment primary key:
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 uses the AUTOINCREMENT keyword to perform the auto-increment task.
By default, the starting value of AUTOINCREMENT is 1, and each new record increments by 1.
To specify that the "P_Id" column starts at 20 and increments by 10, change autoincrement to AUTOINCREMENT(20,10):
To insert a new record into the "Persons" table, we do not need to specify a value for the "P_Id" column (a unique value will be added automatically):
INSERT INTO Persons (FirstName, LastName) VALUES ('Bill', 'Gates')
The above SQL statement will insert a new record into the "Persons" table. "P_Id" will be assigned a unique value. "FirstName" will be set to "Bill", and the "LastName" column will be set to "Gates".
Syntax for Oracle
In Oracle, the code is a bit more complex.
You must create an auto-increment field through a sequence object (which generates a number sequence).
Please use the following CREATE SEQUENCE syntax:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
The above code creates a sequence object named seq_person, starting at 1 and incrementing by 1. The object caches 10 values to improve performance. The CACHE option specifies how many sequence values are stored to improve access speed.
To insert a new record into the "Persons" table, we must use the nextval function (which retrieves the next value from the seq_person sequence):
INSERT INTO Persons (P_Id, FirstName, LastName) VALUES (seq_person.nextval, 'Lars', 'Monsen')
The above SQL statement will insert a new record into the "Persons" table. The assignment of "P_Id" is the next number from the seq_person sequence. "FirstName" will be set to "Bill", and the "LastName" column will be set to "Gates".