是否可以针对单个查询禁用表上的单个触发器?
我有一个大约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
答案 0 :(得分:1)
MySQL不允许您启用/禁用单个触发器。
可能对您有用的一件事是将触发器定义修改为仅在您需要时触发。
例如,您可以修改触发器定义,以便在new.GUID
为NULL时仅设置new.GUID
。这样你就可以明确地为GUID
设置一个值,而不用担心触发器会覆盖它。
例如:
IF (new.GUID IS NULL)
THEN
SET new.GUID = @GUID;
END IF;