SQL - Auto Increment
Az SQL AUTO INCREMENT utasítás:
Szeretnénk értékét adni automatikusan az elsődleges kulcs mezőnek, valahányszor egy új rekorddal egészül ki.
MySQL
| CREATE TABLE személyek ( személyek_azonosító int NOT NULL AUTO_INCREMENT, vezetéknév varchar(255) NOT NULL, keresztnév varchar(255), cím varchar(255), város varchar(255), PRIMARY KEY (személyek_azonosító) ) |
Az Auto-Increment utasítással az elsődleges kulcs kezdeti értékét is meg tudjuk határozni:
ALTER TABLE személyek AUTO_INCREMENT=100
Ha egy új rekordot szúrunk ba a "személyek" táblába, akkor nem kell az értéket a "személyek_azonosító" oszlopban is felvennünk mert automatikusan egyedi értékkel egészül ki:
INSERT INTO személyek (vezetéknév,keresztnév)
VALUES ('Tóth','Renáta')
SQL Server szintaxis:
CREATE TABLE személyek
(
személyek_azonosító int PRIMARY KEY IDENTITY,
vezetéknév varchar(255) NOT NULL,
keresztnév varchar(255),
cím varchar(255),
város varchar(255)
)
Az MS SQL Server használatánál kulcsszót kell használnunk az Auto-Increment funkcióban. Alapértelmezés szerint a kezdő érték identitás 1, és akkor minden 1-Increment egy új rekord. Egy érték megadásához a "személyek_azonosító" oszlopban kell kezdeni, pl ha az érték 10 és a növedék 5,a személyazonosító IDENTITÁS (10,5). A fenti SQL utasítás egy új rekordot ad a "személyek" táblázathoz. Ha beszúrunk egy új rekordot a "személyek" táblába, akkor nem kell meg egy értéket a "személyek_azonosító" oszlopban is felvennünk (egyedi értékkel automatikusan kiegészül):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Balog','Katalin')
Hozzáférhetőségi szintaxis:
CREATE TABLE Persons
(
P_Id PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Az MS ACCESS Server használatánál kulcsszót kell használnunk az Auto-Increment funkcióban. Alapértelmezés szerint a kezdő érték identitás 1, és akkor minden 1-Increment egy új rekord. Egy érték megadásához a "személyek_azonosító" oszlopban kell kezdeni, pl ha az érték 10 és a növedék 5,a személyazonosító IDENTITÁS (10,5). A fenti SQL utasítás egy új rekordot ad a "személyek" táblázathoz. Ha beszúrunk egy új rekordot a "személyek" táblába, akkor nem kell meg egy értéket a "személyek_azonosító" oszlopban is felvennünk (egyedi értékkel automatikusan kiegészül):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Balog','Katalin')
Szintaxis ORACLE-ben:
Az Oracle a kód egy kicsit trükkösebb. Létre kell hozni az Auto-Increment terén egy új objektum sorozatot (ez az objektum generál számsort).
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
A fenti kód létrehoz egy új sorozatot seq_person nevű objektum néven. A cache beállítás meghatározza, hogy hány sorozat értéke kerül tárolásra a memóriában a gyorsabb hozzáférés érdekében. Egy új rekordot szeretnénk beszúrni a "személyek" tábla, a nextval funkció segítségével beolvassuk a következő értéket a seq_person objektumba, sorrendben:
INSERT INTO Persons (személyek_azonosító,vezetéknév,keresztnév)
VALUES (seq_person.nextval,'Balog','Katalin')