2
我在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
列是NOT NULL和下面都有可能值:
enum('NEW','OPEN','COMPLETED','CANCELLED','REPLACED')
默認爲'NEW'
感謝
是'order_status'可爲空?如果列的值已經標記爲「已完成」並且您只在另一列上升,觸發器會觸發? –
這是一個有五種不同選項的ENUM。我只是將它設置爲NOT NULL。我現在會測試它。 – 6bytes
@JW。我剛剛用'order_status'列更新了我的問題。 – 6bytes