PostgreSQL

PostgreSQL Vytvořit spouštěč po INSERT / UPDATE / DELETE

PostgreSQL Vytvořit spouštěč po INSERT / UPDATE / DELETE
Kdykoli se na definované tabulce provádí akce definované změny (SQL INSERT, UPDATE, DELETE nebo TRUNCATE), aktivační událost je sada událostí, které se provádějí automaticky. Spouštěče lze použít k zavedení obchodních pravidel, ověření vstupních informací a udržování audit trailu. Spouštěče SQL jsou implementovány podle formátu SQL. Zahrnuje struktury používané v několika programovacích jazycích, které vám umožňují deklarovat lokální proměnné, sledovat tok procesu pomocí deklarací, přidělovat výsledky příkazů proměnným a zpracovávat chyby. Jakmile navíc vytvoříte spouštěč pro něco, jako je tabulka, spouštěč se okamžitě odstraní, jakmile se odstraní tabulka. Podíváme se na to, jak v tomto segmentu fungují spouštěče PostgreSQL.

Syntax:

Následuje jednoduchá syntaxe pro generování spouštěče:

>> CREATE TRIGGER trigger_name [BEFORE | AFTER | INSTEAD OF] event-name ON table_name [---- Trigger Logic];

Zde je vysvětlení výše uvedeného obecného dotazu.

Abychom krátce porozuměli konceptu spouštěče, spusťte z aplikací prostředí PostgreSQL. Chcete-li pracovat na jiném serveru, změňte server, nebo stiskněte klávesu enter na klávesnici. Přidejte název databáze, na které chcete pracovat, jinak ji nechte tak, jak je, a klepněte na Enter. Jak vidíte, aktuálně pracujeme na portu 5432 jako výchozí; můžete to také změnit. Poté zadejte jiné uživatelské jméno než Postgres, pokud chcete pracovat s jiným uživatelem, nebo jej nechte prázdné a stiskněte tlačítko Enter. Nyní je váš příkazový shell připraven k použití.

SPUŠTĚNÍ Po příkazu INSERT

Podívejme se na příklad spouště, když byl jako událost spouště použit příkaz INSERT. K tomu musíme vytvořit dvě nové tabulky, např.G., „Zaměstnat“ a „audit“. Tabulka „zaměstnat“ bude obsahovat osobní záznamy zaměstnanců konkrétní společnosti a tabulka „audit“ bude obsahovat informace o tom, kdy se zaměstnanci připojili ke společnosti. Níže jsou uvedeny dotazy k vytváření tabulek.

>> CREATE TABLE employed (ID INTEGER NOT NULL PRIMARY KEY, Name VARCHAR (100) NOT NULL, Age VARCHAR (100) NOT NULL, Plat VARCHAR (100) NOT NULL);

>> CREATE TABLE audit (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);

Musíte vytvořit proceduru, která se automaticky provede nebo bude fungovat, když bude vyvolána spoušť. Bude použito v dalším příkazu CREATE TRIGGER. Z níže uvedeného příkazu můžete získat představu, že vytváříme proceduru „auditlogfunc ()“, která vrátí spouštěč jako proměnnou „$ examp_table $“. Funkce začíná klauzulí BEGIN, následovanou příkazem INSERT. Tento příkaz INSERT vloží automatické ID a aktuální čas a datum pomocí vestavěné funkce do tabulky „audit“ a vrátí tento výsledek do TRIGGER.

Je čas vygenerovat TRIGGER pomocí příkazu CREATE TRIGGER. V tabulce „zaměstnat“ vytvoříme spouštěč s názvem „emp_trig“. Klauzule AFTER INSERT ON znamená, že tato aktivační událost bude fungovat až po provedení příkazu insert. FOR EACH ROW means on the execution of every INSERT command, this trigger will call and execute the “auditlogfunc ()” procedure created just before.

>> CREATE TRIGGER emp_trig PO VLOŽENÍ NA ZAMĚSTNÁVÁNÍ PRO KAŽDOU ŘADU PROCES VÝKONU auditlogfunc ();

Je čas vložit některá data do tabulky „zaměstnat“. Spusťte níže uvedený příkaz INSERT v shellu.

>> VLOŽTE DO ZAMĚSTNÁNÍ (ID, jméno, věk, plat) HODNOTY ('1', 'Paul', '34', '60000');

Podívejte se na tabulku „zaměstnat“. Data byla úspěšně přidána pomocí příkazu INSERT.

Nyní nahlédněte do tabulky „auditu“. Můžete vidět, že je také aktualizován kvůli spuštění „emp_trig“ a auditlogfunc ().

SPUŠTĚNÍ Po příkazu UPDATE

Nyní se podíváme na příklad spouště pomocí příkazu UPDATE jako spouštěcí události. Musíme znovu vytvořit nový postup s jiným názvem „update“, jak je znázorněno na obrázku. Tento postup také při volání vloží záznamy do tabulky „auditu“.

Nyní vytvořte nový spouštěč s názvem „update_emp“ pomocí příkazu CREATE TRIGGER. Toto bude fungovat až po provedení dotazu UPDATE na tabulce a bude volat proceduru „update“.

Aktualizujte tabulku „zaměstnat“ nastavením jejího ID na „2“.

Načíst záznamy tabulky „zaměstnat“ a zobrazit změny, jak je uvedeno níže.

Jak vidíte v tabulce „audit“, došlo k její reorganizaci, protože byla aktualizována tabulka „zaměstnat“.

SPUŠTĚNÍ po příkazu DELETE

Otevřete pgAdmin 4 z aplikací pro práci na GUI PostgreSQL. Pod schématem „test“ najdete seznam tabulek. Vytvořte novou tabulku „emp“ a stejnou tabulku „auditu“.

Tentokrát vyvoláme spouštěcí příkaz příkazem DELETE. Níže je tabulka „emp“ s některými záznamy.

Zde je tabulka auditu s předchozími dvěma aktualizacemi.

Vytvořte proceduru s názvem „Del ()“, která spustí mazání v tabulce „audit“ po odstranění záznamů z tabulky „emp“.

Vytvořte spouštěč „del_trig“ pomocí dotazu CREATE TRIGGER. Tento spouštěč provede proceduru „Del“, když bude provedena nějaká klauzule DELETE na tabulce „emp“.

Vymažme záznam z tabulky „emp“, kde „id“ zaměstnance je „5“. Odstraní jeden řádek z tabulky „emp“.

Načtěte záznamy z tabulky „emp“ a podívejte se na to. Můžete vidět, že řádek byl odstraněn, kde „id“ bylo „5“.

Nyní extrahujte záznamy z tabulky „audit“ a všimnete si, že byla aktualizována, protože operace VYMAZAT byla provedena v tabulce „emp“.

Závěr:

Udělali jsme téměř každý základní příklad, abychom porozuměli konceptu TRIGGER při provádění operací INSERT, UPDATE a DELETE.

Hry Jak nainstalovat a hrát Doom na Linuxu
Jak nainstalovat a hrát Doom na Linuxu
Úvod do Doom Série Doom vznikla v 90. letech po vydání původního Doomu. Byl to okamžitý hit a od té doby herní série získala řadu ocenění a původní Do...
Hry Vulkan pro uživatele Linuxu
Vulkan pro uživatele Linuxu
S každou novou generací grafických karet vidíme, že vývojáři her posouvají hranice grafické věrnosti a přibližují se k fotorealismu. Ale navzdory vešk...
Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvoření vlastní simulace dopravy může být zábavné, uvolňující a mimořádně lákavé. Proto se musíte ujistit, že vyzkoušíte co nejvíce her, abyste našl...