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
column は NOT NULL であり、次のような値が考えられます:
enum('NEW','OPEN','COMPLETED','CANCELLED','REPLACED')
デフォルトは'NEW'
ありがとう