Как временно блокировать триггеры в mysql?
возможно ли это?
в 5 версии нет
встроенных механизмов
но можно ввести специальный флаг-переменную, отвечающую за работу или не работу триггера
Схема:
CREATE TABLE `users` (
`id` int auto_increment,
`name` varchar(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `actions` (
`userid` int unsigned NOT NULL,
`updated` varchar(45) NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ТРИГГЕР :
DROP TRIGGER IF EXISTS AddUsers;
CREATE TRIGGER AddUsers AFTER INSERT ON users
FOR EACH ROW BEGIN
IF (@DISABLE_TRIGGERS IS NULL) then
# основное тело
INSERT INTO actions VALUES(NEW.id, NEW.name);
END IF;
END;
нормальная работа триггера:
INSERT INTO users(name) VALUES('Masha');
работа с отключенным триггером:
BEGIN;
SET @DISABLE_TRIGGERS=1;
INSERT INTO users(name) VALUES('bbb');
SET @DISABLE_TRIGGERS=NULL;
COMMIT;
спасибо за информацию
Комментарии
Оставить комментарий
Базы данных - MySql (Maria DB)
Термины: Базы данных - MySql (Maria DB)