logo

PostgreSQL seriál

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é:

    MALÁ SÉRIA SERIAL BIGSERIAL

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:

PostgreSQL seriál

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:

PostgreSQL seriál

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:

PostgreSQL seriál

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:

PostgreSQL seriál

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:

PostgreSQL seriál

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 :

PostgreSQL seriál

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:

PostgreSQL seriál

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.

PostgreSQL seriál

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:

PostgreSQL seriál

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.

PostgreSQL seriál

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:

PostgreSQL seriál

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.