PostgreSQL Trigger: Create, Drop Example

Co jsou spouštěče Postgresql?

Aktivační událost PostgreSQL je funkce, která se spouští automaticky, když u databázového objektu dojde k události databáze. Například stůl.

Mezi příklady databázových událostí, které mohou aktivovat aktivační událost, patří INSERT, UPDATE, DELETE atd. Když navíc vytvoříte trigger pro tabulku, aktivační událost bude automaticky odstraněna, když bude tato tabulka odstraněna.

V tomto tutoriálu PostgreSQL se naučíte následující:

Jak se spoušť používá v POSRGREQL?

Spoušť lze při jejím vytvoření označit operátorem FOR EACH ROW. Taková spoušť bude vyvolána jednou pro každý řádek upravený operací. Spoušť lze také při jejím vytvoření označit operátorem FOR EACH STATEMENT. Tento spouštěč bude spuštěn pouze jednou pro konkrétní operaci.

Vytvoření spouště

K vytvoření spouště používáme funkci CREATE TRIGGER. Zde je syntaxe funkce: | _+_ |

Název spouště je název spouště.

PŘED, PO a NAD MÍSTEM jsou klíčová slova, která určují, kdy bude spouštěč vyvolán.

Název-události je název události, která způsobí vyvolání spouště. Může to být INSERT, UPDATE, DELETE atd.

Název-tabulky je název tabulky, ve které má být vytvořen spouštěč.

Pokud má být spouštěč vytvořen pro operaci INSERT, musíme přidat parametr ON název-sloupce.

Následující syntaxe to ukazuje: | _+_ |

Například:

Použijeme níže uvedenou tabulku cen:

Cena:

Vytvoříme další tabulku Price_Audits, kde budeme zaznamenávat změny provedené v tabulce Price: | _+_ |

Nyní můžeme definovat novou funkci s názvem auditfunc: | _+_ |

Výše uvedená funkce vloží záznam do tabulky Price_Audits včetně nového ID řádku a času vytvoření záznamu.

Nyní, když máme spouštěcí funkci, měli bychom ji svázat s naší cenovou tabulkou. Spouštěč dáme název price_trigger. Před vytvořením nového záznamu bude automaticky vyvolána spouštěcí funkce pro zaznamenání změn. Zde je spoušť: | _+_ |

Vložíme nový záznam do tabulky Cena: | _+_ |

Nyní, když jsme do tabulky Price vložili záznam, by měl být záznam vložen také do tabulky Price_Audit. To bude důsledkem spouště, kterou jsme vytvořili v tabulce Cena. Zkontrolujeme to: | _+_ |

Tím se vrátí následující:

Spoušť fungovala úspěšně.

Spouštěče výpisu

Všechny spouště, které vytvoříte v PostgreSQL, jsou uloženy v tabulce pg_trigger. Chcete -li zobrazit seznam spouštěčů, které máte v databázi, proveďte dotaz na tabulku spuštěním příkazu SELECT, jak je uvedeno níže: | _+_ |

Tím se vrátí následující:

Sloupec tgname tabulky pg_trigger označuje název spouštěče.

Odhození spouště

Chcete -li zrušit spoušť PostgreSQL, použijeme příkaz DROP TRIGGER s následující syntaxí: | _+_ |

Parametr trigger-name označuje název spouště, který má být odstraněn.

Název_tabulky označuje název tabulky, ze které má být spouštěč odstraněn.

Klauzule IF EXISTS se pokusí odstranit existující aktivační událost. Pokud se pokusíte odstranit spouště, která neexistuje bez použití klauzule IF EXISTS, zobrazí se chyba.

Možnost CASCADE vám pomůže automaticky vypustit všechny objekty závislé na spouště.

Pokud použijete možnost RESTRICT, aktivační událost nebude odstraněna, pokud na ní závisí objekty.

Například:

Chcete -li odstranit aktivační událost s názvem example_trigger v tabulce Price, spustíme následující příkaz:

Chcete -li zrušit aktivační událost s názvem example_trigger na tabulce Company, spusťte následující příkaz: | _+_ |

Pomocí pgAdmin

Nyní se podívejme, jak všechny tři akce proběhly pomocí pgAdmin.

Vytváření spouště

Chcete -li dosáhnout stejného prostřednictvím pgAdmin, proveďte toto:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigačním panelu vlevo klikněte na Databáze.
  2. Klikněte na Demo.

Krok 3) Chcete -li vytvořit tabulku Price_Audits, zadejte editor dotazů: | _+_ |

Krok 4) Klikněte na tlačítko Provést.

Krok 5) Spuštěním následujícího kódu definujte funkci auditfunc: | _+_ |

Krok 6) Spuštěním následujícího kódu vytvoříte aktivační událost price_trigger: | _+_ |

Krok 7)

  1. Spusťte následující příkaz a vložte nový záznam do tabulky Cena: | _+_ |
  2. Spuštěním následujícího příkazu zkontrolujte, zda byl záznam vložen do tabulky Price_Audits: | _+_ |

    To by mělo vrátit následující:

Krok 8) Pojďme zkontrolovat obsah tabulky Price_Audits:

Spouštěče výpisu

Krok 1) Spuštěním následujícího příkazu zkontrolujte spouště ve vaší databázi: | _+_ |

Tím se vrátí následující:

Odhození spouští

Chcete -li zrušit aktivační událost s názvem example_trigger na tabulce Company, spusťte následující příkaz: | _+_ |

Souhrn:

  • Aktivační událost PostgreSQL odkazuje na funkci, která se spouští automaticky, když u databázového objektu, například tabulky, dojde k události databáze.
  • Mezi příklady takových databázových událostí patří INSERT, UPDATE, DELETE atd.
  • Aktivační událost existuje pouze během životnosti databázového objektu, pro který byl vytvořen.
  • Pokud je databázový objekt odstraněn, bude odstraněn také spouštěč.
  • Spouštěče PostgreSQL se vytvářejí pomocí příkazu CREATE TRIGGER.
  • Každá spoušť je spojena s funkcí, která udává, co bude spoušť dělat při jejím vyvolání.

Stáhněte si databázi použitou v tomto kurzu