Leave a Comment
Триггеры в mySQL 5.0
Ссылка на статью.
Для чего они нужны:
— чтобы проверить и предотвратить вставку некорректных данных
— чтобы изменить или отменить процедуры INSERT, UPDATE, DELETE
— чтобы отслеживать изменения данных внутри сесии.
Триггер — это фактически хранимая процедура, выполняющаяся при определённом событии, относящемся к определённым данным (хотя и с некоторыми нюансами).
Синтаксис:
1 2 3 4 5 6 |
CREATE TRIGGER <trigger name> { BEFORE | AFTER } { INSERT | UPDATE | DELETE } ON <table name> FOR EACH ROW <triggered SQL statement> |
При этом доступны специфичные пространства имён OLD и NEW в зависимости от контекста (INSERT, UPDATE, DELETE)
1 2 3 4 5 6 7 |
CREATE TRIGGER t21_au BEFORE UPDATE ON t22 FOR EACH ROW BEGIN SET @old = OLD . s1; SET @new = NEW.s1; END;// |
Пример использования для предотвращения вставки некорректных данных
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
CREATE TABLE t25 (s1 INT, s2 CHAR(5), PRIMARY KEY (s1)) ENGINE=INNODB// CREATE TRIGGER t25_bi BEFORE INSERT ON t25 FOR EACH ROW IF LEFT(NEW.s2,1)<>'A' THEN SET NEW.s1=0; END IF;// CREATE TRIGGER t25_bu BEFORE UPDATE ON t25 FOR EACH ROW IF LEFT(NEW.s2,1)<>'A' THEN SET NEW.s1=0; END IF;// INSERT INTO t25 VALUES (0,'a') /* priming the pump */ // INSERT INTO t25 VALUES (5,'b') /* gets error '23000' */ // |
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.