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.
- Název spouštěče: Název spouštěče
- PŘED, PO, MÍSTO: Podmínky, které rozhodují, kdy bude aktivační událost aktivní
- Název události: Název události, která by mohla spustit spouštěč (Může to být, ať už z INSERT nebo UPDATE nebo DELETE)
- Název tabulky: Určuje tabulku, na které bude spouštěč vytvořen
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.