我在mySQL数据库的某些表上创建了一个BEFORE INSERT
触发器,但不知何故它无效。如果我剥离第一个IF语句,一切正常,但是在IF语句就位的情况下,代码不会被执行。该字段尚未填写NEW
或其他内容吗?现场商家存在并且充满了'merchantName'。
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 ;
FIXED: 在指向直接运行insert插入命令后,我发现这个工作,之后我得出结论,它必须是一个INSERT后跟一个UPDATE。所以我添加了另一个触发器,它只执行BEFORE UPDATE触发器。这非常有效!