Trigger – powiązane tabele

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;