在插入触发器IF语句之前不起作用

时间:2013-08-05 09:27:55

标签: mysql

我在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触发器。这非常有效!

0 个答案:

没有答案