Ebben a részben a működését fogjuk megérteni PostgreSQL sorozat pszeudo-típus, amely lehetővé teszi számunkra, hogy meghatározzuk oszlopok automatikus növelése táblázatokban. És mi is látjuk példák a PostgreSQL Serial pszeudo-típus .
Mi az a PostgreSQL Serial pszeudotípus?
A PostgreSQL-ben van egy bizonyos típusú adatbázis-objektum-generátor, az úgynevezett Sorozatszám , ami szokott hozzon létre egy egész számok sorozatát amelyeket gyakran használnak a Elsődleges kulcs egy táblázatban.
A sorozat a segítségével generálható SOROS pszeudo-típus , miközben új táblát hozunk létre, amint azt a következő parancsban láthatjuk:
CREATE TABLE table_name( ID SERIAL );
A PostgreSQL a következőket teszi, ha megadjuk a SOROS pszeudo-típus hoz ID oszlop:
karakterlánc a jsonobjecthez
- Először is, a PostgreSQL létrehoz egy szekvenciaobjektumot, majd létrehozza a sorozat által létrehozott következő értéket az adott oszlop előre meghatározott értékeként.
- Ezt követően a PostgreSQL javítani fogja a NOT NULL megkötés hoz ID oszlop mivel egy sorozat mindig olyan egész számot hoz létre, amely a nem nulla érték .
- Végül a PostgreSQL biztosítja a sorozat tulajdonosát a ID oszlop; kimenetként a sorozatobjektum eltávolításra kerül, amikor a tábla ill ID oszlop le van ejtve.
Megjegyzés: Mindkét parancsot használhatjuk a Serial pszeudotípus megadására, mivel az alábbi parancsok hasonlóak egymáshoz.
CREATE TABLE table_name( ID SERIAL );
CREATE SEQUENCE table_name_ID_seq; CREATE TABLE table_name ( ID integer NOT NULL DEFAULT nextval('table_name_ID_seq') ); ALTER SEQUENCE table_name_ID_seq OWNED BY table_name.ID;
A PostgreSQL Serial pszeudo-típus három típusba sorolták, amelyek a következők:
A következő táblázatunkban megtalálható az összes Soros pszeudo-típus a PostgreSQL által támogatott specifikáció:
Név | Tárolási méret | Hatótávolság |
---|---|---|
KISSZOROZAT | 2 bájt | 1-től 32767-ig |
SOROZATSZÁM | 4 bájt | 1-től 2147483647-ig |
BIGSERIAL | 8 bájt | 1-től 9223372036854775807-ig |
A PostgreSQL Serial pszeudotípus szintaxisa
A PostgreSQL szintaxisa Soros pszeudo-típus alábbiak szerint:
variable_name SERIAL
Példák a PostgreSQL SERIAL típusra
Lássunk különböző példákat, hogy megértsük, hogyan a PostgreSQL Serial pszeudo típus működik .
Megjegyzés: Meghatározhatjuk az ELSŐDLEGES KULCS kényszert a SOROZAT oszlophoz, mert a SERIAL típus nem hoz létre közvetetten indexet az oszlopban, és nem teszi az oszlopot elsődleges kulcs oszlopként.
Létrehozunk egy új táblát a CREATE parancs segítségével, és beszúrunk néhány értéket az INSERT paranccsal.
Az alábbi példában a TEREMT parancs generál a Autók asztal a Szervezeti adatbázis:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Kimenet
A Autók táblázat sikeresen létrejött a fenti parancsok végrehajtása után, amint az az alábbi képernyőképen látható:
Egyszer a Autók táblázatot generáltunk, az INSERT paranccsal beszúrhatunk néhány értéket. És használhatjuk a ALAPÉRTELMEZETT kulcsszót az INSERT parancsban, vagy hagyja ki az oszlop nevét (Car_id) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Kimenet
A fenti parancs végrehajtása után a következő üzenetet kapjuk, és az értéket sikeresen beillesztették a Autók asztal:
VAGY Használni a ALAPÉRTELMEZETT kulcsszó az Oszlop névvel (Car_id):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Kimenet
A fenti parancs végrehajtásakor a következő üzenetet kapjuk; az értéket sikeresen beillesztették a Autók asztal:
Amint a fenti képernyőképen láthatjuk, a PostgreSQL két sort szúrt be a Autók asztal a Car_id oszlop értékei 1. és 2 .
Létrehozása és beillesztése után a Autók táblázat értékeit fogjuk használni KIVÁLASZTÁS parancs visszaadja a Autók asztal:
SELECT * FROM Cars;
Kimenet
A fenti parancs sikeres végrehajtása után a következő eredményt kapjuk:
Használhatjuk a pg_get_serial_sequence() függvény a sorozat nevének lekéréséhez SOROZATSZÁM oszlopban egy megadott táblázatban, amint azt az alábbi szintaxisban láthatjuk:
karakterlánc tömbként
pg_get_serial_sequence('table_name','column_name')
Ahhoz, hogy a jelenlegi érték a sorozat által létrehozott szekvencia nevet adhatunk át a currval() függvénynek.
A következő példában használtuk a currval() függvény által előállított aktuális értéket adja vissza Autók asztal Car_id_seq tárgy:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Kimenet
A fenti parancs végrehajtása után az alábbi kimenetet kapjuk:
Használhatjuk a RETURNING Car_id záradékot az INSERT parancsba, ha azt akarjuk, hogy a sorozat által létrehozott értékeket megkapjuk, amikor új sort szúrunk be a táblázatba.
Az alábbi paranccsal új sort szúrhatunk be a Autók tábla, és visszaadja a számára generált rekordokat Car_id oszlop.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Kimenet
A fenti parancs végrehajtásakor a következő kimenetet kapjuk, amely visszaadja a Car_id mint 3 :
Jegyzet:
- Ahogy fentebb megértettük, a szekvenciagenerátor a művelet nem tranzakcióbiztos, ami azt jelenti, hogy minden felhasználó más értéket kap ha két párhuzamos adatbázis kapcsolatok megpróbálják megszerezni a következő értéket egy sorozatból.
- És az adott felhasználó sorszáma tétlen lesz, és rést hoz létre a sorozatban, ha egy felhasználó visszaállíthatja a tranzakciót .
Példa2
Lássunk még egy példát a tanuláshoz Soros pszeudo-típus részletesen.
Tehát egy másik új táblát fogunk létrehozni, mint a Zöldségek táblázatot a CREATE parancs segítségével hasonlóvá adatbázis vagyis Szervezet a ... val Veg_id oszlop, mint a SOROZATSZÁM pszeudo-típusú.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Kimenet
A Zöldségek táblázat sikeresen létrejött a fenti parancsok végrehajtása után, amint az az alábbi képernyőképen látható:
Egyszer a Zöldségek táblázat létrehozása megtörtént, akkor az INSERT paranccsal beszúrunk néhány értéket, és kihagyjuk a Veggies_id oszlop az alábbi parancs szerint:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Kimenet
A fenti parancs végrehajtásakor a következő üzenetet kapjuk: az értéket sikeresen beillesztették a Zöldségek asztal.
Vagy használhatjuk a Alapértelmezett kulcsszót, és a Veggie_id oszlop a következő parancsban látható módon:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Kimenet
A fenti parancs végrehajtása után az alábbi üzenetet kapjuk, amely szerint vagy használhatjuk a Alapértelmezett kulcsszó vagy a figyelmen kívül hagyja az oszlop nevét , hasonló kimenetet kapunk:
Ezért hozzáadunk néhány további értéket a Autók táblázat a következő parancs segítségével:
android verziók
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Jalapeno Peppers','Fall'), ('Cucumbers','Summer'), ('Winter Squash','Winter'), ('Snow Peas','Spring'), ('Black Radish','All seasons'), ('Pumpkin','Fall');
Kimenet
A fenti parancs végrehajtása után az alábbi üzenetet kapjuk, amely jelzi, hogy az értéket sikeresen beillesztették a Zöldségek asztal.
Létrehozása és beillesztése után a Zöldségek táblázat értékeit fogjuk használni KIVÁLASZTÁS parancs az összes sor visszaadásához Zöldségek asztal:
SELECT * FROM Vegetables;
Kimenet
A fenti parancs sikeres végrehajtása után az alábbi kimenetet kapjuk:
Áttekintés
Ban,-ben PostgreSQL Serial pszeudo-típus szakaszban megtanultuk a Serial pszeudo típusú funkcionalitást, amelyet többnyire egy olyan létrehozására használnak automatikus növekedés oszlop értéke egy adott táblázathoz.