Junior
Co jsou to triggery v relační databázi?
sobes.tech AI
Odpověď od AI
Trigger je speciální typ uložené procedury, která se automaticky spouští jako reakce na určitý událost v tabulce nebo pohledu databáze.
Hlavní události, které spouštějí trigger:
INSERT: Vložení nového řádku.UPDATE: Změna existujícího řádku.DELETE: Odstranění řádku.
Triggery se mohou spouštět před (BEFORE) nebo po (AFTER) vykonání události.
Příklady použití triggerů:
- Automatická aktualizace polí (například datum poslední změny).
- Kontrola integrity dat.
- Záznam změn (logování).
- Kaskádová aktualizace nebo odstranění souvisejících dat.
-- Příklad vytvoření triggeru AFTER INSERT (fiktivní syntaxe)
CREATE TRIGGER audit_log_trigger
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION log_user_insert();
-- Příklad funkce volané triggerem
CREATE FUNCTION log_user_insert() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO audit_logs (table_name, operation, timestamp, new_data)
VALUES ('users', 'INSERT', NOW(), row_to_json(NEW));
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Výhody:
- Centralizace podnikové logiky.
- Automatizace rutinních úkolů.
- Zvýšení integrity dat.
Nevýhody:
- Obtížnost ladění.
- Potenciální vliv na výkon.
- Složitost aplikační logiky, protože část je přesunuta na úroveň databáze.