我在 MySQL 表中有一个触发器。表有大约 20 列。
DELIMITER $$
CREATE
DEFINER=`root`@`localhost`
TRIGGER `completion_date_update`
BEFORE UPDATE ON `orders`
FOR EACH ROW
BEGIN
IF NEW.`order_status` = 'COMPLETED' THEN
SET NEW.`completion_date` = NOW();
END IF;
IF NEW.`order_status` != 'COMPLETED' THEN
SET NEW.`completion_date` = NULL;
END IF;
END$$
我想要的是这个触发器仅在更新completion_date
列时更新列。如果更新了任何其他列,则此触发器不应执行任何操作。
实际发生的是,此触发器会在任何列更新时进行更新。order_status
completion_date
谁能向我解释为什么会发生这种情况以及我做错了什么?
order_status
列不为空,可能的值如下:
enum('NEW','OPEN','COMPLETED','CANCELLED','REPLACED')
默认为'NEW'
谢谢