MySQL:更新前触发不起作用

标签 mysql triggers

我试图在表的每个记录级别处理更新之前运行触发器。

我想做的是,当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/

相关文章:

php - 通过 unserialize() 函数和 mysql 查询获取所有数组值

mysql - MySQL 触发器的描述中所写的语法是否正确?会起作用吗?

php - Laravel 在使用 CASE WHEN 时如何使用 order by?

wpf - 如何将样式触发器应用于 WPF 中的数据模板

Postgresql 更新触发器不接受 When/OF 条件

sql - UPDATE ... FROM ... 内部触发函数未按预期工作?

wpf - 在 WPF 中,触发器的顺序重要吗?

mysql - Active Record在5.000秒内无法获得数据库连接

mysql - 使用 sqldf 在 R 中运行 SQL 查询时出错

mysql 矛盾查询同时运行