SQL AUTO INCREMENT pole
Pole AUTO INCREMENT
Automatické zvýšení umožňuje automatické generování jedinečného čísla při vložení nového záznamu do tabulky.
Často se jedná o pole primárního klíče, které bychom rádi vytvořili automaticky při každém vložení nového záznamu.
Syntaxe pro MySQL
Následující příkaz SQL definuje sloupec "Personid" jako pole primárního klíče s automatickým přírůstkem v tabulce "Osoby":
CREATE TABLE Persons
(
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQL používá AUTO_INCREMENT
klíčové slovo k provedení funkce automatického přírůstku.
Ve výchozím nastavení je počáteční hodnota pro AUTO_INCREMENT
1 a pro každý nový záznam se zvýší o 1.
Chcete-li, aby AUTO_INCREMENT
sekvence začínala jinou hodnotou, použijte následující příkaz SQL:
ALTER TABLE Persons AUTO_INCREMENT=100;
Pro vložení nového záznamu do tabulky "Osoby" NEBUDEME muset zadat hodnotu pro sloupec "Osoba" (automaticky bude přidána jedinečná hodnota):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Výše uvedený příkaz SQL by vložil nový záznam do tabulky "Osoby". Sloupec "Personid" by měl přiřazenou jedinečnou hodnotu. Sloupec "Jméno" by byl nastaven na "Lars" a sloupec "Příjmení" by byl nastaven na "Monsen".
Syntaxe pro SQL Server
Následující příkaz SQL definuje sloupec "Personid" jako pole primárního klíče s automatickým přírůstkem v tabulce "Osoby":
CREATE TABLE Persons
(
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS SQL Server používá IDENTITY
klíčové slovo k provedení funkce automatického přírůstku.
Ve výše uvedeném příkladu je počáteční hodnota pro
IDENTITY
1 a pro každý nový záznam se zvýší o 1.
Tip: Chcete-li určit, že sloupec „Osoba“ má začínat hodnotou 10 a zvyšovat se o 5, změňte jej na IDENTITY(10,5)
.
Pro vložení nového záznamu do tabulky "Osoby" NEBUDEME muset zadat hodnotu pro sloupec "Osoba" (automaticky bude přidána jedinečná hodnota):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Výše uvedený příkaz SQL by vložil nový záznam do tabulky "Osoby". Sloupec "Personid" by měl přiřazenou jedinečnou hodnotu. Sloupec "Jméno" by byl nastaven na "Lars" a sloupec "Příjmení" by byl nastaven na "Monsen".
Syntaxe pro Access
Následující příkaz SQL definuje sloupec "Personid" jako pole primárního klíče s automatickým přírůstkem v tabulce "Osoby":
CREATE TABLE Persons
(
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS Access používá AUTOINCREMENT
klíčové slovo k provedení funkce automatického zvýšení.
Ve výchozím nastavení je počáteční hodnota pro AUTOINCREMENT
1 a pro každý nový záznam se zvýší o 1.
Tip: Chcete-li určit, že sloupec „Osoba“ má začínat hodnotou 10 a zvyšovat se o 5, změňte automatické zvýšení na
AUTOINCREMENT(10,5)
.
Pro vložení nového záznamu do tabulky "Osoby" NEBUDEME muset zadat hodnotu pro sloupec "Osoba" (automaticky bude přidána jedinečná hodnota):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Výše uvedený příkaz SQL by vložil nový záznam do tabulky "Osoby". Sloupec "Personid" by měl přiřazenou jedinečnou hodnotu. Sloupec "Jméno" by byl nastaven na "Lars" a sloupec "Příjmení" by byl nastaven na "Monsen".
Syntaxe pro Oracle
V Oracle je kód trochu složitější.
Budete muset vytvořit pole automatického přírůstku s objektem sekvence (tento objekt generuje číselnou řadu).
Použijte následující CREATE SEQUENCE
syntaxi:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
Výše uvedený kód vytvoří sekvenční objekt s názvem seq_person, který začíná 1 a bude se zvyšovat o 1. Uloží také do mezipaměti až 10 hodnot pro výkon. Volba mezipaměti určuje, kolik hodnot sekvence bude uloženo v paměti pro rychlejší přístup.
Pro vložení nového záznamu do tabulky "Osoby" budeme muset použít funkci nextval (tato funkce získá další hodnotu ze sekvence seq_person):
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
Výše uvedený příkaz SQL by vložil nový záznam do tabulky "Osoby". Sloupec "Personid" by měl přiřazeno další číslo ze sekvence seq_person. Sloupec "Jméno" bude nastaven na "Lars" a sloupec "Příjmení" bude nastaven na "Monsen".