Wyzwalacze umożliwiają wykonanie funkcji w bazie danych, gdy zajdą pewne zdarzenia (np. wstawienie do tabeli).
Nie mogę komentować konkretnie mysql.
Uwaga:wyzwalacze mogą być bardzo kuszące, kiedy zaczynasz ich używać, wydają się być magicznym pociskiem na wszelkiego rodzaju problemy. Ale sprawiają, że dzieją się „magiczne” rzeczy, jeśli nie znasz bazy danych na wylot, może się wydawać, że dzieją się naprawdę dziwne rzeczy (takie jak wstawianie do innych tabel, zmiana danych wejściowych itp.). Przed zaimplementowaniem rzeczy jako wyzwalacza poważnie rozważyłbym zamiast tego wymuszenie użycia API wokół schematu (najlepiej w bazie danych, ale na zewnątrz, jeśli nie możesz).
Niektóre rzeczy, do których nadal używałbym wyzwalaczy
- Śledzenie pól „date_created” i „date_last_edited”
- Wstawianie „ID” (w Oracle, gdzie nie ma pola automatycznego identyfikatora)
- Prowadzenie historii zmian
Rzeczy, do których nie chcesz używać wyzwalaczy
- zasady biznesowe/logika
- wszystko, co łączy się poza bazą danych (np. wywołanie usługi internetowej)
- Kontrola dostępu
- Wszystko, co nie jest transakcyjne (wszystko, co robisz w wyzwalaczu, MUSI być w stanie wycofać się wraz z transakcją)