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í:
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:
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:
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
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:
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:
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 :
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í
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.
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:
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í
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:
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.