我试图在表的每个记录级别处理更新之前运行触发器。
我想做的是,当qst_title
列的记录发生更新时,如果qst_perma_title
列为NULL,则qst_perma_title
列将使用 qst_title
列中的值进行更新,并且 qst_title
列将根据原始更新查询进行更新。
我使用下面的代码,但没有显示错误,并且 qst_perma_title
列未更新。
当前值为:
qst_title
= '旧标题'
qst_perma_title
= NULL
查询
UPDATE TD_QUESTION SET qst_title
=“新标题值”,其中qst_id
= 1;
触发
DELIMITER //
CREATE TRIGGER TRG_QST_UPD
BEFORE UPDATE ON TD_QUESTION
FOR EACH ROW
BEGIN
IF OLD.`qst_perma_title` IS NULL THEN
SET NEW.`qst_perma_title` = OLD.`qst_title`;
END IF;
END//
DELIMITER ;
最佳答案
CREATE TRIGGER TRG_QST_UPD
BEFORE UPDATE ON TD_QUESTION
FOR EACH ROW
IF OLD.qst_perma_title IS NULL THEN
SET NEW.qst_perma_title = OLD.qst_title;
END IF;
首先运行此查询,然后尝试更新。我检查过,它对我来说工作正常。
关于MySQL:更新前触发不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974036/