Lekcje modułu (4/4)
Praktyczne wyzwalacze i audyt
Teraz, gdy nauczyliśmy się wykuwać inteligentne kule (funkcje spustu), musimy zamontować je na prawdziwej broni gruntowanej, czekając na wydarzenie: oto rzeczywiste wyzwalacze! Wyzwalacz formalnie dołącza wcześniej utworzoną funkcję i instruuje ją, aby uruchomiła „PRZED” lub „PO” konkretnym zdarzeniu CRUD w danej tabeli.
Istnieje wiele opcji; na przykład FOR EACH ROW uruchamia go raz na każdy wiersz, którego dotyczy problem, więc jeśli zapytanie zbiorcze jest GLOBALNĄ AKTUALIZACJĄ obejmującą ponad 5 milionów wierszy, spowoduje to uruchomienie 5 milionów mikrowykonań — uważaj!
CREATE TRIGGER sync_inventory_trigger
-- Event options
AFTER INSERT OR UPDATE ON order_items
-- Modus operandi (singular or global macro-block FOR EACH STATEMENT)
FOR EACH ROW
-- Run the forged action
EXECUTE FUNCTION update_stock();Wyzwalacz jest niewidoczny dla JavaScript i samodzielnie utrzymuje doskonałą spójność zapasów, wyłącznie w oparciu o aktualizacje bezpiecznie przesyłane do silnika.
Automatyzacja Updated_At
Występuje odwieczny problem biznesowy polegający na tym, że zapominamy o przekazaniu { updated_at: new Date() } w naszych modelach aktualizacji JS. Funkcja wyzwalacza set_updated_at w połączeniu z wyzwalaczem BEFORE UPDATE usuwa tę niedogodność, po cichu aktualizując automatycznie każdą zmianę rekordu.
Spróbuj sam
Utwórz wyzwalacz o nazwie „trg_force_uppercase”. Dołącz go w fazie „BEFORE INSERT” w tabeli „customers”. Wymuś obliczenia wiersz po wierszu „FOR EACH ROW” i wywołaj wykonanie funkcji „force_uppercase_name()”. Uwaga: odtwórz także UDF „force_uppercase_name” (ponieważ środowisko jest izolowane) na górze kod, a następnie dołącz deklarację wyzwalacza.
Pokaż wskazówkę
Składnia tekstu: najpierw utwórz funkcję, a następnie dodaj CREATE TRIGGER trg_force_uppercase PRZED INSERT ON klienci DLA KAŻDEGO WIERSZA WYKONAJ FUNKCJĘ force_uppercase_name();
Rozwiązanie dostępne po 3 próbach
Zabij czujnik! Czasami chcemy przesłać nieprzetworzone pliki początkowe lub tymczasowe zmiany natywne, omijając hałaśliwe audyty. Usunięcie wyzwalacza jest niezwykle proste (nie usuwasz funkcji organicznej, usuwasz jedynie powiązanie czujnika). Użyj słowa kluczowego „DROP TRIGGER”, określając nazwę i globalny załącznik.
Pokaż wskazówkę
Pamiętaj o podaniu skąd. DROP TRIGGER trg_force_uppercase NA klientach;
Rozwiązanie dostępne po 3 próbach