Trigger powiązany jest z tabelą, pozwala na automatyzację i sprawdzanie danych:
- wylicza pola pochodne np. oblicza brutto z netto i vat, wiek z daty urodzenia
- sprawdza poprawność zakresu np. 0 – 100%
- może operować na innych tabelach
Operacja na innych tabelach:
delimiter $$ CREATE TRIGGER user_ref BEFORE INSERT ON users FOR EACH ROW BEGIN INSERT INTO logins SET a2 = NEW.login; DELETE FROM pending WHERE name = NEW.lastname; UPDATE connections SET nb = nb + 1 WHERE user_id = NEW.id; END; $$ delimiter ; -- pola tabeli users poprzedzone NEW.
-- koryguje wartość procentową pola przed aktualizacją mysql> delimiter // mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON account FOR EACH ROW BEGIN IF NEW.amount < 0 THEN SET NEW.amount = 0; ELSEIF NEW.amount > 100 THEN SET NEW.amount = 100; END IF; END; // mysql> delimiter;
BEGIN, END, delimiter można opuścić jeśli jest jedna instrukcja
CREATE TRIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum = @sum + NEW.amount;
CREATE TRIGGER calculate_brutto BEFORE INSERT ON invoices FOR EACH ROW SET NEW.brutto = NEW.netto * NEW.vat;