V tejto časti pochopíme fungovanie PostgreSQL seriál pseudotyp, ktorý nám umožňuje definovať stĺpce s automatickým prírastkom v tabuľkách. A tiež vidíme príklady z Sériový pseudotyp PostgreSQL .
Čo je pseudotyp PostgreSQL Serial?
V PostgreSQL máme jeden konkrétny druh generátora databázových objektov známy ako Serial , na ktorý je zvyknutý vytvorte postupnosť celých čísel ktoré sa často používajú ako a Primárny kľúč v tabuľke.
Sekvenciu je možné vygenerovať pomocou SÉRIOVÝ pseudotyp , zatiaľ čo vytvárame novú tabuľku, ako môžeme vidieť v nasledujúcom príkaze:
CREATE TABLE table_name( ID SERIAL );
PostgreSQL vykoná nasledovné, ak poskytneme SÉRIOVÝ pseudotyp k ID stĺpec:
- Po prvé, PostgreSQL vytvorí sekvenčný objekt a potom určí ďalšiu hodnotu vytvorenú sekvenciou ako preddefinovanú hodnotu konkrétneho stĺpca.
- Potom PostgreSQL vylepší a NOT NULL obmedzenie k ID stĺpec pretože postupnosť vždy vytvára celé číslo, ktoré je a nenulovú hodnotu .
- Nakoniec PostgreSQL poskytne vlastníkovi sekvencie ID stĺpec; ako výstup je objekt sekvencie odstránený, keď tabuľka resp ID stĺpec je vypustená.
Poznámka: Oba príkazy môžeme použiť na určenie pseudotypu Serial, pretože oba nižšie uvedené príkazy sú si navzájom podobné.
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;
The Sériový pseudotyp PostgreSQL bola rozdelená do troch typov, ktoré sú nasledovné:
Máme nasledujúcu tabuľku, ktorá obsahuje všetky Sériový pseudotyp špecifikácia, ktorá je podporovaná PostgreSQL:
názov | Veľkosť úložiska | Rozsah |
---|---|---|
MALÁ SÉRIA | 2 bajty | 1 až 32767 |
SERIAL | 4 bajty | 1 až 2147483647 |
BIGSERIAL | 8 bajtov | 1 až 9223372036854775807 |
Syntax sériového pseudotypu PostgreSQL
Syntax PostgreSQL Sériový pseudotyp nasledovne:
variable_name SERIAL
Príklady typu PostgreSQL SERIAL
Pozrime sa na rôzne príklady, aby sme pochopili, ako PostgreSQL Serial pseudo typ funguje .
zloženie vzťahov
Poznámka: Obmedzenie PRIMARY KEY môžeme definovať pre stĺpec SERIAL, pretože typ SERIAL nepriamo nevytvára index v stĺpci ani nevytvára stĺpec ako stĺpec primárneho kľúča.
Vytvárame jednu novú tabuľku pomocou príkazu CREATE a vkladáme niektoré hodnoty pomocou príkazu INSERT .
V nižšie uvedenom príklade používame VYTVORIŤ príkaz na vygenerovanie a Autá stôl do Databáza organizácie:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Výkon
The Autá tabuľka bola úspešne vytvorená po vykonaní vyššie uvedených príkazov, ako je znázornené na obrázku nižšie:
Raz Autá bola vygenerovaná tabuľka, môžeme do nej vložiť niektoré hodnoty pomocou príkazu INSERT. A môžeme použiť DEFAULT kľúčové slovo v príkaze INSERT alebo vynechajte názov stĺpca (Car_id) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Výkon
Po implementácii vyššie uvedeného príkazu dostaneme nasledujúcu správu a hodnota bola úspešne vložená do Autá tabuľka:
ALEBO Pomocou DEFAULT Kľúčové slovo s názvom stĺpca (Car_id):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Výkon
Pri implementácii vyššie uvedeného príkazu dostaneme nasledujúcu správu; hodnota bola úspešne vložená do Autá tabuľka:
Ako môžeme vidieť na obrázku vyššie, PostgreSQL vložil dva riadky do Autá stôl s Car_id hodnoty stĺpcov sú 1 a 2 .
10 na mocninu 6
Po vytvorení a vložení Autá tabuľkové hodnoty, použijeme SELECT príkaz vráti všetky riadky Autá tabuľka:
SELECT * FROM Cars;
Výkon
Po úspešnej implementácii vyššie uvedeného príkazu dostaneme nasledujúci výsledok:
Môžeme použiť pg_get_serial_sequence() funkcia na získanie názvu sekvencie a SERIAL stĺpec v špecifikovanej tabuľke, ako môžeme vidieť v nižšie uvedenej syntaxi:
pg_get_serial_sequence('table_name','column_name')
Ak chcete získať súčasná hodnota vytvorený sekvenciou, môžeme odovzdať názov sekvencie funkcii currval().
V nasledujúcom príklade sme použili krivka() funkcia na vrátenie aktuálnej hodnoty vytvorenej funkciou Autá tabuľky Car_id_seq objekt:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Výkon
Po implementácii vyššie uvedeného príkazu dostaneme nasledujúci výstup:
Môžeme použiť VRÁTENIE Car_id klauzulu do príkazu INSERT, ak chceme získať tieto hodnoty vytvorené sekvenciou pri vkladaní nového riadku do tabuľky.
Nasledujúci príkaz sa používa na vloženie nového riadku do Autá a vráti tie záznamy vygenerované pre Car_id stĺpec.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Výkon
Po vykonaní vyššie uvedeného príkazu dostaneme nasledujúci výstup, ktorý vráti Car_id ako 3 :
Poznámka:
- Ako sme pochopili vyššie, sekvenčný generátor operácia nie je bezpečná pre transakcie, čo znamená, že každý používateľ dostane inú hodnotu ak sú dve paralelné databázy spojenia sa snažia získať ďalšiu hodnotu zo sekvencie.
- A poradové číslo tohto používateľa bude nečinné a vytvorí medzeru v sekvencii if jeden používateľ môže vrátiť transakciu späť .
Príklad2
Pozrime sa na ďalší príklad, aby sme sa to naučili Sériový pseudotyp podrobne.
Takže vytvoríme ďalšiu novú tabuľku ako a Zelenina pomocou príkazu CREATE do podobnej tabuľky databázy to jest Organizácia s Veg_id stĺpec ako SERIAL pseudotypu.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Výkon
shehzad poonawala
The Zelenina tabuľka bola úspešne vytvorená po vykonaní vyššie uvedených príkazov, ako je znázornené na obrázku nižšie:
Raz Zelenina bola vygenerovaná tabuľka, vložíme do nej niektoré hodnoty pomocou príkazu INSERT a vynecháme Veggies_id stĺpec, ako je znázornené v nasledujúcom príkaze:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Výkon
Pri implementácii vyššie uvedeného príkazu dostaneme nasledujúcu správu: hodnota bola úspešne vložená do Zelenina tabuľky.
Alebo môžeme použiť aj Predvolené kľúčové slovo a používa Veggie_id stĺpec, ako je znázornené v nasledujúcom príkaze:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Výkon
Po vykonaní vyššie uvedeného príkazu dostaneme nižšie uvedenú správu, ktorá hovorí, že buď môžeme použiť Predvolené kľúčové slovo alebo ignorujte názov stĺpca , dostaneme podobný výstup:
Preto k položke pridáme niekoľko ďalších hodnôt Autá tabuľky pomocou nasledujúceho príkazu:
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');
Výkon
Po vykonaní vyššie uvedeného príkazu dostaneme nižšie uvedenú správu, ktorá zobrazuje, že hodnota bola úspešne vložená do Zelenina tabuľky.
Po vytvorení a vložení Zelenina tabuľkové hodnoty, použijeme SELECT príkaz na vrátenie všetkých riadkov Zelenina tabuľka:
čo je monitor
SELECT * FROM Vegetables;
Výkon
Po úspešnej implementácii vyššie uvedeného príkazu dostaneme nasledujúci výstup:
Prehľad
V Sériový pseudotyp PostgreSQL sme sa naučili sériovú funkcionalitu pseudotypu, ktorá sa väčšinou používa na vytvorenie automatické zvýšenie hodnotu stĺpca pre konkrétnu tabuľku.