SQL AUTO INCREMENT -veld
Veld AUTOMATISCH VERHOGEN
Met Auto-increment kan automatisch een uniek nummer worden gegenereerd wanneer een nieuw record in een tabel wordt ingevoegd.
Vaak is dit het primaire sleutelveld dat we automatisch zouden willen aanmaken telkens wanneer een nieuw record wordt ingevoegd.
Syntaxis voor MySQL
De volgende SQL-instructie definieert de kolom "Personid" als een veld voor de primaire sleutel met automatische verhoging in de tabel "Personen":
CREATE TABLE Persons
(
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQL gebruikt het AUTO_INCREMENT
trefwoord om een functie voor automatisch verhogen uit te voeren.
Standaard is de startwaarde voor AUTO_INCREMENT
1 en wordt deze met 1 verhoogd voor elke nieuwe record.
AUTO_INCREMENT
Gebruik de volgende SQL-instructie om de reeks met een andere waarde te laten beginnen:
ALTER TABLE Persons AUTO_INCREMENT=100;
Om een nieuw record in de tabel "Personen" in te voegen, hoeven we GEEN waarde op te geven voor de kolom "Personid" (een unieke waarde wordt automatisch toegevoegd):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
De bovenstaande SQL-instructie zou een nieuw record invoegen in de tabel "Personen". De kolom "Personid" zou een unieke waarde krijgen. De kolom "Voornaam" zou worden ingesteld op "Lars" en de kolom "Achternaam" zou worden ingesteld op "Monsen".
Syntaxis voor SQL Server
De volgende SQL-instructie definieert de kolom "Personid" als een veld voor de primaire sleutel met automatische verhoging in de tabel "Personen":
CREATE TABLE Persons
(
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
De MS SQL Server gebruikt het IDENTITY
sleutelwoord om een functie voor automatisch verhogen uit te voeren.
In het bovenstaande voorbeeld is de startwaarde voor
IDENTITY
1 en wordt deze met 1 verhoogd voor elke nieuwe record.
Tip: Als u wilt specificeren dat de kolom "Personid" moet beginnen met waarde 10 en moet worden verhoogd met 5, wijzigt u deze in IDENTITY(10,5)
.
Om een nieuw record in de tabel "Personen" in te voegen, hoeven we GEEN waarde op te geven voor de kolom "Personid" (een unieke waarde wordt automatisch toegevoegd):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
De bovenstaande SQL-instructie zou een nieuw record invoegen in de tabel "Personen". De kolom "Personid" zou een unieke waarde krijgen. De kolom "Voornaam" zou worden ingesteld op "Lars" en de kolom "Achternaam" zou worden ingesteld op "Monsen".
Syntaxis voor toegang
De volgende SQL-instructie definieert de kolom "Personid" als een veld voor de primaire sleutel met automatische verhoging in de tabel "Personen":
CREATE TABLE Persons
(
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
De MS-Access gebruikt het AUTOINCREMENT
sleutelwoord om een auto-increment-functie uit te voeren.
Standaard is de startwaarde voor AUTOINCREMENT
1 en wordt deze met 1 verhoogd voor elke nieuwe record.
Tip: Als u wilt specificeren dat de kolom "Personid" moet beginnen met waarde 10 en moet worden verhoogd met 5, wijzigt u de automatische verhoging in
AUTOINCREMENT(10,5)
.
Om een nieuw record in de tabel "Personen" in te voegen, hoeven we GEEN waarde op te geven voor de kolom "Personid" (een unieke waarde wordt automatisch toegevoegd):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
De bovenstaande SQL-instructie zou een nieuw record invoegen in de tabel "Personen". De kolom "Personid" zou een unieke waarde krijgen. De kolom "Voornaam" zou worden ingesteld op "Lars" en de kolom "Achternaam" zou worden ingesteld op "Monsen".
Syntaxis voor Oracle
In Oracle is de code een beetje lastiger.
U moet een automatisch ophogingsveld maken met het reeksobject (dit object genereert een nummerreeks).
Gebruik de volgende CREATE SEQUENCE
syntaxis:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
De bovenstaande code maakt een reeksobject met de naam seq_person, dat begint met 1 en wordt verhoogd met 1. Het slaat ook maximaal 10 waarden op in de cache voor prestaties. De cache-optie specificeert hoeveel sequentiewaarden in het geheugen worden opgeslagen voor snellere toegang.
Om een nieuw record in de tabel "Personen" in te voegen, moeten we de functie nextval gebruiken (deze functie haalt de volgende waarde op uit de reeks seq_person):
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
De bovenstaande SQL-instructie zou een nieuw record invoegen in de tabel "Personen". De kolom "Personid" krijgt het volgende nummer uit de reeks seq_person toegewezen. De kolom "Voornaam" zou worden ingesteld op "Lars" en de kolom "Achternaam" zou worden ingesteld op "Monsen".