SQL OUTO-INKREMENT Veld
Outo-toename Veld
Outo-inkrement laat toe dat 'n unieke nommer outomaties gegenereer word wanneer 'n nuwe rekord in 'n tabel ingevoeg word.
Dikwels is dit die primêre sleutelveld wat ons outomaties wil hê elke keer as 'n nuwe rekord ingevoeg word.
Sintaksis vir MySQL
Die volgende SQL-stelling definieer die "Personid"-kolom as 'n outo-inkrementerende primêre sleutelveld in die "Persone"-tabel:
CREATE TABLE Persons
(
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQL gebruik die AUTO_INCREMENT
sleutelwoord om 'n outomatiese inkrementfunksie uit te voer.
By verstek is die beginwaarde vir AUTO_INCREMENT
1, en dit sal met 1 toeneem vir elke nuwe rekord.
Om die AUTO_INCREMENT
ry met 'n ander waarde te laat begin, gebruik die volgende SQL-stelling:
ALTER TABLE Persons AUTO_INCREMENT=100;
Om 'n nuwe rekord in die "Persone"-tabel in te voeg, hoef ons NIE 'n waarde vir die "Personid"-kolom te spesifiseer nie ('n unieke waarde sal outomaties bygevoeg word):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Die SQL-stelling hierbo sal 'n nuwe rekord in die "Persone"-tabel invoeg. Aan die "Personid"-kolom sal 'n unieke waarde toegeken word. Die "FirstName"-kolom sal op "Lars" gestel word en die "LastName"-kolom sal op "Monsen" gestel word.
Sintaksis vir SQL Server
Die volgende SQL-stelling definieer die "Personid"-kolom as 'n outo-inkrementerende primêre sleutelveld in die "Persone"-tabel:
CREATE TABLE Persons
(
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
Die MS SQL Server gebruik die IDENTITY
sleutelwoord om 'n outomatiese inkrementfunksie uit te voer.
In die voorbeeld hierbo is die beginwaarde vir
IDENTITY
1, en dit sal met 1 toeneem vir elke nuwe rekord.
Wenk: Om te spesifiseer dat die "Personid"-kolom by waarde 10 moet begin en met 5 moet toeneem, verander dit na IDENTITY(10,5)
.
Om 'n nuwe rekord in die "Persone"-tabel in te voeg, hoef ons NIE 'n waarde vir die "Personid"-kolom te spesifiseer nie ('n unieke waarde sal outomaties bygevoeg word):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Die SQL-stelling hierbo sal 'n nuwe rekord in die "Persone"-tabel invoeg. Aan die "Personid"-kolom sal 'n unieke waarde toegeken word. Die "FirstName"-kolom sal op "Lars" gestel word en die "LastName"-kolom sal op "Monsen" gestel word.
Sintaksis vir toegang
Die volgende SQL-stelling definieer die "Personid"-kolom as 'n outo-inkrementerende primêre sleutelveld in die "Persone"-tabel:
CREATE TABLE Persons
(
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
Die MS Access gebruik die AUTOINCREMENT
sleutelwoord om 'n outomatiese inkrementfunksie uit te voer.
By verstek is die beginwaarde vir AUTOINCREMENT
1, en dit sal met 1 toeneem vir elke nuwe rekord.
Wenk: Om te spesifiseer dat die "Personid"-kolom by waarde 10 moet begin en met 5 moet toeneem, verander die outo-inkrement na
AUTOINCREMENT(10,5)
.
Om 'n nuwe rekord in die "Persone"-tabel in te voeg, hoef ons NIE 'n waarde vir die "Personid"-kolom te spesifiseer nie ('n unieke waarde sal outomaties bygevoeg word):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Die SQL-stelling hierbo sal 'n nuwe rekord in die "Persone"-tabel invoeg. Aan die "Personid"-kolom sal 'n unieke waarde toegeken word. Die "FirstName"-kolom sal op "Lars" gestel word en die "LastName"-kolom sal op "Monsen" gestel word.
Sintaksis vir Oracle
In Oracle is die kode 'n bietjie meer lastig.
Jy sal 'n outo-inkrement veld met die volgorde voorwerp moet skep (hierdie voorwerp genereer 'n getalreeks).
Gebruik die volgende CREATE SEQUENCE
sintaksis:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
Die kode hierbo skep 'n volgorde-objek genaamd seq_person, wat met 1 begin en met 1 sal inkrementeer. Dit sal ook tot 10 waardes in die kas kas vir prestasie. Die kas-opsie spesifiseer hoeveel volgordewaardes in die geheue gestoor sal word vir vinniger toegang.
Om 'n nuwe rekord in die "Persone"-tabel in te voeg, sal ons die nextval-funksie moet gebruik (hierdie funksie haal die volgende waarde uit seq_person-volgorde):
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
Die SQL-stelling hierbo sal 'n nuwe rekord in die "Persone"-tabel invoeg. Die "Personid"-kolom sal die volgende nommer van die seq_person-reeks toegeken word. Die "FirstName"-kolom sal op "Lars" gestel word en die "LastName"-kolom sal op "Monsen" gestel word.