我BEFORE INSERT
在 mySQL 数据库中的某个表上创建了一个触发器,但不知何故它不起作用。如果我剥离第一个 IF 语句,一切正常,但是在 IF 语句到位后,代码不会被执行。该字段尚未填写NEW
吗?字段商家存在并填写“商家名称”。
IF(NEW.merchant = 'merchantName') THEN
SET NEW.category = CASE
WHEN NEW.name COLLATE UTF8_GENERAL_CI LIKE '%cat1%' THEN 'Category1'
ELSE 'Others'
END;
END IF
希望有人能指出我正确的方向!
我现在已经从头开始创建了触发器,包括 CREATE TRIGGER 序列,并包含了一个更改的分隔符(正如有人作为评论发布的,后来删除了):仍然无法正常工作:(
DELIMITER $$
CREATE TRIGGER `updateCategories` BEFORE INSERT ON `products`
FOR EACH ROW BEGIN
IF(NEW.merchant = 'merchantName') THEN
SET NEW.category = CASE
WHEN NEW.name COLLATE UTF8_GENERAL_CI LIKE '%cat1%' THEN 'Category1'
ELSE 'Others'
END;
END IF;
END$$
DELIMITER ;
修复:在被指示直接为插入运行插入命令后,我发现这很有效,之后我得出结论,它必须是一个 INSERT 后跟一个 UPDATE 的东西。所以我添加了另一个触发器,它现在只是一个 BEFORE UPDATE 触发器,它做同样的事情。这完美!