1

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 触发器,它做同样的事情。这完美!

4

0 回答 0