logo

PostgreSQL seriál

V této části porozumíme fungování PostgreSQL seriál pseudotyp, který nám umožňuje definovat automatické zvýšení sloupců v tabulkách. A také vidíme příklady z Sériový pseudotyp PostgreSQL .

Co je pseudotyp PostgreSQL Serial?

V PostgreSQL máme jeden konkrétní druh generátoru databázových objektů známý jako Seriál , na který je zvyklý vytvořit posloupnost celých čísel které se často používají jako a Primární klíč v tabulce.

Sekvenci lze generovat pomocí SÉRIOVÝ pseudotyp , zatímco vytváříme novou tabulku, jak můžeme vidět v následujícím příkazu:

 CREATE TABLE table_name( ID SERIAL ); 

PostgreSQL provede následující, pokud poskytneme SÉRIOVÝ pseudotyp k ID sloupec:

  • Nejprve PostgreSQL vytvoří sekvenční objekt a poté nastaví další hodnotu vytvořenou sekvencí jako předdefinovanou hodnotu konkrétního sloupce.
  • Poté PostgreSQL vylepší a NOT NULL omezení k ID sloupec protože sekvence vždy vytváří celé číslo, které je a nenulovou hodnotu .
  • Nakonec PostgreSQL poskytne vlastníka sekvence ID sloupec; jako výstup je objekt sekvence odstraněn, když tabulka resp ID sloupec je upuštěno.

Poznámka: Můžeme použít oba příkazy k určení pseudotypu Serial, protože oba níže uvedené příkazy jsou si navzájem 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 byl rozdělen do tří typů, které jsou následující:

    MALÝ SÉRIÁL SERIÁL VELKÝ SERIÁL

Máme následující tabulku, která obsahuje všechny Sériový pseudotyp specifikace, která je podporována PostgreSQL:

menu nastavení pro android
název Velikost úložiště Rozsah
MALÝ SÉRIÁL 2 bajty 1 až 32767
SERIÁL 4 byty 1 až 2147483647
VELKÝ SERIÁL 8 bajtů 1 na 9223372036854775807

Syntaxe sériového pseudotypu PostgreSQL

Syntaxe PostgreSQL Sériový pseudotyp jak následuje:

 variable_name SERIAL 

Příklady typu PostgreSQL SERIAL

Podívejme se na různé příklady, abychom pochopili, jak PostgreSQL Serial pseudo typ funguje .

Poznámka: Omezení PRIMARY KEY můžeme definovat pro sloupec SERIAL, protože typ SERIAL nepřímo nevytváří index na sloupci ani nedělá sloupec jako sloupec primárního klíče.

Vytváříme jednu novou tabulku pomocí příkazu CREATE a vkládáme některé hodnoty pomocí příkazu INSERT .

V níže uvedeném příkladu používáme VYTVOŘIT příkaz ke generování a Auta stůl do Databáze organizací:

 CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL ); 

Výstup

The Auta tabulka byla úspěšně vytvořena po provedení výše uvedených příkazů, jak ukazuje níže uvedený snímek obrazovky:

PostgreSQL seriál

Jednou Auta tabulka byla vygenerována, můžeme do ní vložit některé hodnoty pomocí příkazu INSERT. A můžeme použít VÝCHOZÍ klíčové slovo v příkazu INSERT nebo vynechejte název sloupce (Car_id) .

 INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera'); 

Výstup

Po implementaci výše uvedeného příkazu dostaneme následující zprávu a hodnota byla úspěšně vložena do Auta stůl:

PostgreSQL seriál

NEBO Za použití VÝCHOZÍ klíčové slovo s názvem sloupce (Car_id):

 INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8'); 

Výstup

Při implementaci výše uvedeného příkazu dostaneme následující zprávu; hodnota byla úspěšně vložena do Auta stůl:

greibach normální forma
PostgreSQL seriál

Jak můžeme vidět na výše uvedeném snímku obrazovky, PostgreSQL vložil dva řádky do Auta stůl s Car_id hodnoty sloupců jsou 1 a 2 .

Po vytvoření a vložení Auta tabulkové hodnoty, použijeme VYBRAT příkaz vrátí všechny řádky Auta stůl:

java operátory
 SELECT * FROM Cars; 

Výstup

Po úspěšné implementaci výše uvedeného příkazu získáme následující výsledek:

PostgreSQL seriál

Můžeme použít pg_get_serial_sequence() funkce k získání názvu sekvence a SERIÁL sloupec v zadané tabulce, jak můžeme vidět v níže uvedené syntaxi:

 pg_get_serial_sequence('table_name','column_name') 

Chcete-li získat současná cena vytvořené sekvencí, můžeme předat název sekvence funkci currval().

V následujícím příkladu jsme použili zakřivení() funkce, která vrátí aktuální hodnotu vytvořenou funkcí Auta stůl Car_id_seq objekt:

 SELECT currval(pg_get_serial_sequence('Cars', 'car_id')); 

Výstup

Po implementaci výše uvedeného příkazu získáme níže uvedený výstup:

PostgreSQL seriál

Můžeme použít VRACENÍ Car_id klauzule do příkazu INSERT, pokud chceme získat tyto hodnoty vytvořené sekvencí při vkládání nového řádku do tabulky.

Níže uvedený příkaz se používá k vložení nového řádku do Auta a vrátí tyto záznamy vygenerované pro Car_id sloupec.

 INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id; 

Výstup

Po provedení výše uvedeného příkazu získáme následující výstup, který vrátí Car_id tak jako 3 :

PostgreSQL seriál

Poznámka:

  • Jak jsme pochopili výše, sekvenční generátor operace není bezpečná pro transakce, což znamená, že každý uživatel získá jinou hodnotu pokud dvě paralelní databáze připojení se snaží získat další hodnotu ze sekvence.
  • A pořadové číslo tohoto uživatele bude nečinné a vytvoří mezeru v sekvenci if jeden uživatel může vrátit transakci .

Příklad2

Podívejme se na další příklad, abychom se to naučili Sériový pseudotyp podrobně.

Takže vytvoříme další novou tabulku jako a Zelenina tabulky pomocí příkazu CREATE do podobné databáze to je Organizace s Veg_id sloupec jako SERIÁL pseudotyp.

 CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL ); 

Výstup

The Zelenina tabulka byla úspěšně vytvořena po provedení výše uvedených příkazů, jak ukazuje níže uvedený snímek obrazovky:

paralelní zpracování
PostgreSQL seriál

Jednou Zelenina tabulka byla vygenerována, vložíme do ní některé hodnoty pomocí příkazu INSERT a vynecháme Veggies_id sloupec, jak je znázorněno v níže uvedeném příkazu:

 INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring'); 

Výstup

Při implementaci výše uvedeného příkazu dostaneme následující zprávu: hodnota byla úspěšně vložena do Zelenina stůl.

PostgreSQL seriál

Nebo můžeme také použít Výchozí klíčové slovo a používá Vegetariánské_id sloupec, jak je znázorněno v následujícím příkazu:

 INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter'); 

Výstup

Po provedení výše uvedeného příkazu dostaneme níže uvedenou zprávu, která říká, že buď můžeme použít Výchozí klíčové slovo nebo ignorovat název sloupce , dostaneme podobný výstup:

PostgreSQL seriál

Proto přidáme další hodnoty Auta tabulky pomocí následujícího pří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ýstup

Po provedení výše uvedeného příkazu se zobrazí níže uvedená zpráva, která zobrazuje, že hodnota byla úspěšně vložena do Zelenina stůl.

Hodně štěstí
PostgreSQL seriál

Po vytvoření a vložení Zelenina tabulkové hodnoty, použijeme VYBRAT příkaz vrátit všechny řádky Zelenina stůl:

 SELECT * FROM Vegetables; 

Výstup

Po úspěšné implementaci výše uvedeného příkazu získáme níže uvedený výstup:

PostgreSQL seriál

Přehled

V Sériový pseudotyp PostgreSQL sekci jsme se naučili funkcionalitu sériového pseudotypu, která se většinou používá k vytvoření automatické zvýšení hodnotu sloupce pro konkrétní tabulku.