Syntax:
Obecná syntaxe pro vytvoření primárního klíče s automatickým přírůstkem je následující:
>> CREATE TABLE table_name (id SERIAL);Podívejme se nyní na deklaraci CREATE TABLE podrobněji:
- PostgreSQL nejprve generuje řadovou entitu. Produkuje další hodnotu v řadě a nastavuje ji jako výchozí referenční hodnotu pole.
- PostgreSQL aplikuje implicitní omezení NOT NULL na pole id, protože řada vytváří číselné hodnoty.
- Pole id bude přiděleno jako držitel série. Pokud je pole id nebo samotná tabulka vynecháno, sekvence bude zahozena.
Chcete-li získat koncept automatického zvyšování, ujistěte se, že je ve vašem systému připojen a nakonfigurován PostgreSQL, než budete pokračovat s ilustracemi v této příručce. Otevřete prostředí příkazového řádku PostgreSQL z plochy. Přidejte název svého serveru, na kterém chcete pracovat, jinak jej ponechejte jako výchozí. Napište název databáze, která se nachází na vašem serveru, na kterém chcete pracovat. Pokud to nechcete změnit, nechte to jako výchozí. Budeme používat „testovací“ databázi, proto jsme ji přidali. Můžete také pracovat na výchozím portu 5432, ale můžete jej také změnit. Nakonec musíte zadat uživatelské jméno pro databázi, kterou si vyberete. Nechcete-li to změnit, ponechte výchozí nastavení. Zadejte heslo pro vybrané uživatelské jméno a stiskněte „Enter“ na klávesnici, abyste mohli začít používat příkazový shell.
Použití klíčového slova SERIAL jako datového typu:
Když vytváříme tabulku, obvykle do pole primárního sloupce nepřidáme klíčové slovo SERIAL. To znamená, že při použití příkazu INSERT musíme hodnoty přidat do sloupce primárního klíče. Když ale v našem dotazu při vytváření tabulky použijeme klíčové slovo SERIAL, neměli bychom při vkládání hodnot potřebovat přidávat hodnoty primárního sloupce. Pojďme se na to podívat.
Příklad 01:
Vytvořte tabulku „Test“ se dvěma sloupci „id“ a „name“. Sloupec „id“ byl definován jako sloupec primárního klíče, protože jeho datový typ je SERIAL. Na druhé straně je sloupec „name“ definován jako datový typ TEXT NOT NULL. Zkuste vytvořit příkaz níže a vytvoří se tabulka efektivně, jak je vidět na obrázku níže.
>> CREATE TABLE Test (id SÉRIOVÁ PRIMÁRNÍ KLÍČ, název TEXT NENÍ NULL);
Vložme některé hodnoty do sloupce „název“ nově vytvořené tabulky „TEST“. Do sloupce „id“ nepřidáme žádnou hodnotu. Můžete vidět, že hodnoty byly úspěšně vloženy pomocí příkazu INSERT, jak je uvedeno níže.
>> INSERT INTO Test (name) VALUES ('Aqsa'), ('Rimsha'), ('Khan');
Je čas zkontrolovat záznamy tabulky „Test“. Vyzkoušejte níže uvedenou instrukci SELECT v příkazovém prostředí.
>> SELECT * FROM Test;Z níže uvedeného výstupu si můžete všimnout, že sloupec „id“ má v sobě automaticky nějaké hodnoty, i když jsme nepřidali žádné hodnoty z příkazu INSERT kvůli datovému typu SERIAL, který jsme zadali pro sloupec „id“. Takto funguje datový typ SERIAL sám o sobě.
Příklad 02:
Dalším způsobem, jak zkontrolovat hodnotu sloupce datového typu SERIAL, je použití klíčového slova RETURNING v příkazu INSERT. Níže uvedená deklarace vytvoří nový řádek v tabulce „Test“ a získá hodnotu pro pole „id“:
>> INSERT INTO Test (name) VALUES ('Hassam') RETURNING id;
Zkontrolováním záznamů tabulky „Test“ pomocí dotazu SELECT jsme získali níže uvedený výstup, jak je zobrazen na obrázku. Pátý záznam byl efektivně přidán do tabulky.
>> SELECT * FROM Test;
Příklad 03:
Alternativní verze výše uvedeného vkládacího dotazu používá klíčové slovo DEFAULT. V příkazu INSERT budeme používat název sloupce „id“ a v sekci HODNOTY mu jako hodnotu dáme klíčové slovo DEFAULT. Níže uvedený dotaz bude po spuštění fungovat stejně.
>> INSERT INTO Test (id, name) VALUES (DEFAULT, 'Raza');
Podívejme se na tabulku znovu pomocí dotazu SELECT takto:
>> SELECT * FROM Test;Z výstupu níže můžete vidět, že byla přidána nová hodnota, zatímco sloupec „id“ byl ve výchozím nastavení zvýšen.
Příklad 04:
Pořadové číslo pole sloupce SERIAL najdete v tabulce v PostgreSQL. K tomu se používá metoda pg_get_serial_sequence (). Spolu s metodou pg_get_serial_sequence () musíme použít funkcicurval (). V tomto dotazu poskytneme název tabulky a její název SERIAL sloupce v parametrech funkce pg_get_serial_sequence (). Jak vidíte, zadali jsme tabulku „Test“ a sloupec „id“. Tato metoda se používá v níže uvedeném příkladu dotazu:
>> SELECTcurval (pg_get_serial_sequence ('Test', 'id'));Stojí za zmínku, že naše funkce currentval () nám pomáhá extrahovat nejnovější hodnotu sekvence, která je „5“. Níže uvedený obrázek ilustruje, jak by výkon mohl vypadat.
Závěr:
V tomto tutoriálu průvodce jsme si ukázali, jak použít pseudo-typ SERIAL k automatickému přírůstku v PostgreSQL. Pomocí řady v PostgreSQL je snadné vytvořit sadu automaticky se zvyšujících čísel. Doufejme, že budete moci použít pole SERIAL na popisy tabulek pomocí našich ilustrací jako reference.