临时禁用MySQL中单个INSERT / REPLACE查询的触发器

时间:2014-12-15 14:43:30

标签: mysql sql triggers

是否可以针对单个查询禁用表上的单个触发器?

我有一个大约150行的批处理作业 - 我只想让这个批处理作业仅禁用触发器,而不是其他任何东西?

// Disable this single trigger for shop_products table
REPLACE INTO `shop_products` (`mycolumnid`, `mycoltitle`, `Guid`) VALUES (11, 'hello', '23213-sda-423423');
REPLACE INTO `shop_products` (`mycolumnid`, `mycoltitle`, `Guid`) VALUES (14, 'bye', '53341-sfs-325243');
........

这是我预设的触发器,我想暂停这一次,但实际上并不删除它: -

BEGIN
   declare _GUID VARCHARACTER(64);
   set @GUID = UUID();
   SET new.GUID = @GUID;
END

1 个答案:

答案 0 :(得分:1)

MySQL不允许您启用/禁用单个触发器。

可能对您有用的一件事是将触发器定义修改为仅在您需要时触发。

例如,您可以修改触发器定义,以便在new.GUID为NULL时仅设置new.GUID。这样你就可以明确地为GUID设置一个值,而不用担心触发器会覆盖它。

例如:

   IF (new.GUID IS NULL)
   THEN
     SET new.GUID = @GUID;
   END IF;