Как отключить триггеры в MySQL?
В моей базе данных MySQL у меня есть несколько триггеровON DELETE
а такжеON INSERT
, Иногда мне нужно отключить некоторые триггеры, и я долженDROP
например
DROP TRIGGER IF EXISTS hostgroup_before_insert //
и переустановить. Есть ли ярлык дляSET triggers hostgroup_before_insert = 0
как у нас для внешних ключей:
mysql> SELECT version();
+-------------------------+
| version() |
+-------------------------+
| 5.1.61-0ubuntu0.10.10.1 |
+-------------------------+
1 row in set (0.00 sec)
РЕДАКТИРОВАТЬ Ответ естьнет встроенной серверной системной переменной TRIGGER_CHECKS в MySQL.
Простой обходной путь - вместо этого использовать пользовательскую переменную сеанса.
#FALSE value overrides trigger type settings
SET @TRIGGER_CHECKS = [TRUE|FALSE];
SET @TRIGGER_BEFORE_INSERT_CHECKS = [TRUE|FALSE];
SET @TRIGGER_AFTER_INSERT_CHECKS = [TRUE|FALSE];
DELIMITER $
DROP TRIGGER IF EXISTS `yearCheck_beforeInsert` $
CREATE DEFINER=`root`@`localhost` TRIGGER `yearCheck_beforeInsert`
BEFORE INSERT ON `movies` FOR EACH ROW
#Patch starts here
thisTrigger: BEGIN
IF ((@TRIGGER_CHECKS = FALSE)
OR (@TRIGGER_BEFORE_INSERT_CHECKS = FALSE))
AND (USER() = 'root@localhost')