SQL AUTO INCREMENT-fält

Auto-increment skapar en unik nummer när ett nytt register läggs till i tabellen.

AUTO INCREMENT-fält

Vi vill vanligtvis att ett huvudnyckelsvärde skapas automatiskt varje gång vi lägger till ett nytt register.

Vi kan skapa en auto-increment-fält i tabellen.

Syntax för MySQL

Följande SQL-sats definierar kolonnen "P_Id" i tabellen "Persons" som en auto-increment primärnyckel:

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 använder nyckelordet AUTO_INCREMENT för att utföra auto-increment-uppgifter.

Som standard är startvärdet för AUTO_INCREMENT 1, och varje nytt register ökar med 1.

För att få AUTO_INCREMENT-sekvensen att börja med ett annat värde, använd följande SQL-sats:

ALTER TABLE Persons AUTO_INCREMENT=100

För att lägga till ett nytt register i tabellen "Persons" behöver vi inte ange ett värde för kolonnen "P_Id" (ett unikt värde läggs till automatiskt):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')

Ovanstående SQL-sats kommer att lägga till ett nytt post i tabellen "Persons". Värdet för "P_Id" kommer att tilldelas ett unikt värde. "FirstName" kommer att sättas till "Bill", och kolumnen "LastName" kommer att sättas till "Gates".

Syntax för SQL Server

Följande SQL-sats definierar kolonnen "P_Id" i tabellen "Persons" som en auto-increment primärnyckel:

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 använder nyckelordet IDENTITY för att utföra auto-increment-uppgifter.

Som standard är startvärdet för IDENTITY 1, och varje nytt register ökar med 1.

För att specificera att kolonnen "P_Id" börjar på 20 och ökar med 10, ändra identity till IDENTITY(20,10):

För att lägga till ett nytt register i tabellen "Persons" behöver vi inte ange ett värde för kolonnen "P_Id" (ett unikt värde läggs till automatiskt):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')

Ovanstående SQL-sats kommer att lägga till ett nytt post i tabellen "Persons". Värdet för "P_Id" kommer att tilldelas ett unikt värde. "FirstName" kommer att sättas till "Bill", och kolumnen "LastName" kommer att sättas till "Gates".

Syntax för Access

Följande SQL-sats definierar kolonnen "P_Id" i tabellen "Persons" som en auto-increment primärnyckel:

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 använder nyckelordet AUTOINCREMENT för att utföra auto-increment-uppgifter.

Som standard är startvärdet för AUTOINCREMENT 1, och varje nytt register ökar med 1.

För att specificera att kolonnen "P_Id" börjar på 20 och ökar med 10, ändra autoincrement till AUTOINCREMENT(20,10):

För att lägga till ett nytt register i tabellen "Persons" behöver vi inte ange ett värde för kolonnen "P_Id" (ett unikt värde läggs till automatiskt):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')

Ovanstående SQL-sats kommer att lägga till ett nytt post i tabellen "Persons". Värdet för "P_Id" kommer att tilldelas ett unikt värde. "FirstName" kommer att sättas till "Bill", och kolumnen "LastName" kommer att sättas till "Gates".

Syntaks för Oracle

I Oracle är koden något mer komplex.

Du måste använda sequence för att skapa auto-increment-fält (denna objekt genererar en numerisk sekvens).

Använd följande CREATE SEQUENCE-syntaks:

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

Ovanstående kod skapar en sekvensobjekt med namnet seq_person, som startar vid 1 och ökar med 1. Objektet cachar 10 värden för att förbättra prestandan. CACHE-alternativet anger hur många sekvensvärden som ska lagras för att förbättra tillgångshastigheten.

För att lägga till ett nytt post i tabellen "Persons", måste vi använda nextval-funktionen (denna funktion hämtar nästa värde från seq_person-sekvensen):

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

Ovanstående SQL-sats kommer att lägga till ett nytt post i tabellen "Persons". Värdet för "P_Id" är nästa nummer från seq_person-sekvensen. "FirstName" kommer att sättas till "Bill", och kolumnen "LastName" kommer att sättas till "Gates".