Košík je prázdný

Databázové triggery (spouštěče) jsou speciální procedury, které se automaticky spouštějí (triggered) v reakci na určité události v databázi, jako je vložení (INSERT), aktualizace (UPDATE) nebo smazání (DELETE) záznamů v tabulce. SQLite, oblíbený vestavěný databázový systém, podporuje triggery, což umožňuje vývojářům implementovat komplexní logiku na úrovni databáze. Tento článek poskytuje podrobný návod na používání databázových triggerů v SQLite, včetně příkladů kódu a osvědčených postupů.

Definování Triggerů v SQLite

Základní Syntaxe

Vytvoření triggeru v SQLite se provádí pomocí SQL příkazu CREATE TRIGGER. Základní syntaxe pro definování triggeru je následující:

CREATE TRIGGER nazev_triggeru
AFTER|BEFORE INSERT|UPDATE|DELETE ON nazev_tabulky
FOR EACH ROW
BEGIN
  -- SQL příkazy, které se mají spustit
END;
  • AFTER|BEFORE: Určuje, zda se má trigger spustit před (BEFORE) nebo po (AFTER) události INSERT, UPDATE, nebo DELETE.
  • INSERT|UPDATE|DELETE: Určuje typ databázové operace, která spustí trigger.
  • nazev_tabulky: Jméno tabulky, na kterou se trigger vztahuje.
  • FOR EACH ROW: Znamená, že trigger bude spuštěn pro každý řádek tabulky, který je operací ovlivněn.
  • SQL příkazy: Sekvence SQL příkazů, které se mají vykonat, když je trigger aktivován.

Příklad Použití

Představme si, že máme tabulku zamestnanci a chceme sledovat všechny aktualizace jména zaměstnance. Můžeme vytvořit trigger, který zaznamenává každou změnu jména do logovací tabulky zamestnanci_log:

CREATE TRIGGER log_zmeny_jmena
AFTER UPDATE ON zamestnanci
FOR EACH ROW
WHEN OLD.jmeno != NEW.jmeno
BEGIN
  INSERT INTO zamestnanci_log(zamestnanec_id, stare_jmeno, nove_jmeno, cas_zmeny)
  VALUES (OLD.id, OLD.jmeno, NEW.jmeno, CURRENT_TIMESTAMP);
END;

 

V tomto příkladu, OLD a NEW jsou speciální proměnné poskytované SQLite, které odkazují na hodnoty v řádku před a po aktualizaci, respektive.

Osvedčené Postupy

  1. Minimalizace Používání Triggerů: I když triggery mohou být mocným nástrojem, jejich nadměrné používání může vést k zvýšení složitosti a snížení výkonu databáze. Používejte triggery jen když je to opravdu nutné.

  2. Transparentnost a Dokumentace: Vždy důkladně dokumentujte logiku a účel každého triggeru. To pomáhá udržet databázi transparentní a ulehčuje údržbu.

  3. Testování: Důkladně testujte triggery ve vývojovém prostředí před nasazením do produkčního prostředí. Zajistěte, že triggery fungují jak je očekáváno a nezpůsobují nežádoucí vedlejší efekty.

 

Triggery v SQLite nabízí flexibilní způsob, jak implementovat složitější logiku přímo na úrovni databáze. Správným používáním triggerů můžete automatizovat údržbu dat, sledování změn a další operace bez nutnosti zásahu aplikace. Nicméně je důležité používat triggery uvážlivě a s ohledem na možný dopad na výkon a složitost databáze.