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
-
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é.
-
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.
-
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.