SQL AUTO INCREMENT utasítás (Adatbázismező értékének automatikus növelése)
Ebben a leckében bemutatjuk, hogy hogyan lehet egy adatbázis mezőjének az értékét automatikusan növelni. Azaz, ha felviszünk egy új rekordot, akkor nem kell a mező értékét kézzel kitölteni, hanem az adatbáziskezelő automatikusan kitölti (általában) eggyel nagyobb értékkel, mint az előző rekordét. Ezt a megoldást az AUTO INCREMENT utasítással érhetjük el.
Mi az az AUTO INCREMENT?
Az AUTO INCREMENT lehetővé teszi, hogy egy egyedi számot generáljunk egy új rekord hozzáadásakor. Az egyediséget úgy generálja, hogy nem mi töltjük ki az értékét és mindig az előző rekord értékénél eggyel nagyobbat generál. Emiatt gyakran használják elsődleges kulcsként, hiszen segítségével minden rekord hozzáadáskor automatikusan egyedi azonosítót hoz létre.
Ha a fenti leírás kacifántos lenne, akkor képzeljünk el egy teljesen üres táblát. Adjunk hozzá egy rekordot, amiben csak a nevet töltsük ki, az ID-t hagyjuk üresen, hiszen az egy AUTO INCREMENT mező.
ID | Teljes név |
---|---|
1 | Horváth Tamás |
Adjunk hozzá egy újabb rekordot, az ID-t szintén ne töltsük ki.
ID | Teljes név |
---|---|
1 | Horváth Tamás |
2 | Horváth Rozália |
És ez így folytatódik minden rekord hozzáadásnál: nekünk elegendő csak a nevet hozzáadnunk, az ID-t magától rendeli hozzá.
AUTO INCREMENT a MySQL-ben
A MySQL adatbáziskezelőben az AUTO INCREMENT utasítást AUTO_INCREMENT néven találjuk meg.
MySQL AUTO_INCREMENT szintaxis
Fontos, hogy az AUTO_INCREMENT mezőnek számtípusúnak kell lennie, illetve elsődleges kulcsnak. Szimplán létrehozunk egy mezőt, megadjuk az adattípusát, majd a NOT NULL kikötést, illetve az AUTO_INCREMENT utasítást. Majd ezután elsődleges kulccsá tesszük a mezőt.
CREATE TABLE tábla (
mező int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (mező)
);
Code language: SQL (Structured Query Language) (sql)
Ha megszeretnénk adni egy kezdőértéket, hogy honnan induljon az automatikus növekedés, akkor azt az ALTER TABLE segítségével tehetjük.
ALTER TABLE tábla AUTO_INCREMENT=érték;
Code language: SQL (Structured Query Language) (sql)
A tábla helyére a tábla neve, míg az érték helyére az a szám kerül, ahonnan a számlálást szeretnénk kezdeni.
MySQL AUTO_INCREMENT példa
Létrehozunk egy „vasarlok” táblát, amelyben a „vasarloID” mező elsődleges kulcs és AUTO_INCREMENT lesz.
SQL kód
CREATE TABLE vasarlok (
vasarloID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (vasarloID)
);
Code language: SQL (Structured Query Language) (sql)
INDENTITY az SQL Server-ben
SQL Serverek esetében az INDENTITY utasítást kell használni.
SQL Server INDENTITY szintaktika
Az INDENTITY utasításnak két paramétere van, mind a kettő helyre egy-egy számot vár. Elsőként egy kezdőértéket kell megadni, innen fog indulni a számlálás, másodikként pedig a növelés mértékét. Azaz, ha INDENTITY(10,5)-et adunk meg, akkor a számlálás tíztől fog indulni és ötösével fog növekedni.
CREATE TABLE tábla (
mező int INDENTITY(szám,szám) PRIMARY KEY
);
Code language: SQL (Structured Query Language) (sql)
SQL Server INDENTITY példa
Létrehozunk egy „vasarlok” táblát, amelyben a „vasarloID” mező elsődleges kulcs és olyan mező lesz, amelynek értéke egyről indul és eggyel növekszik.
SQL kód
CREATE TABLE vasarlok (
vasarloID int INDENTITY(1,1) PRIMARY KEY
);
Code language: SQL (Structured Query Language) (sql)
AUTOINCREMENT az MS Access-ben
MS Access adatbáziskezelőkben az AUTOINCREMENT utasítás használatos automatikus értéknöveléshez.
MS Access AUTOINCREMENT szintaktika
Az AUTOINCREMENT utasításnak két paramétere van, mind a kettő helyre egy-egy számot vár. Elsőként egy kezdőértéket kell megadni, innen fog indulni a számlálás, másodikként pedig a növelés mértékét. Azaz, ha INDENTITY(10,5)-et adunk meg, akkor a számlálás tíztől fog indulni és ötösével fog növekedni.
Ha elhagyjuk a két paramétert és a zárójeleket, akkor egytől indul és eggyel növekszik.
CREATE TABLE tábla (
mező AUTOINCREMENT(szám,szám) PRIMARY KEY
);
Code language: SQL (Structured Query Language) (sql)
MS Access AUTOINCREMENT példa
Létrehozunk egy „vasarlok” táblát, amelyben a „vasarloID” mező elsődleges kulcs és AUTOINCREMENT lesz.
SQL kód
CREATE TABLE vasarlok (
vasarloID AUTOINCREMENT PRIMARY KEY
);
Code language: SQL (Structured Query Language) (sql)