mysql - 如何使用条件创建有效的 SQL 触发器?
问题描述
我坚持创建 SQL 触发器,publishingDate
当Published
当前行的字段变为真时更新。我尝试了多种声明变体,但每次都出现语法错误。谷歌搜索没有给出当前案例的关键。希望,你能帮上忙。我的代码如下。我使用的验证器:https ://ru.rakko.tools/tools/36/
delimiter !
CREATE TRIGGER `vc`.`Articles_Updated_trigger`
BEFORE UPDATE
ON `Articles` FOR EACH ROW
BEGIN
IF new.Published = TRUE
SET new.PublishingdDate = CURRENT_TIMESTAMP
END IF;
END !
解决方案
如果要获取状态更改的所有行,则需要比较 OLD 和 NEW 以检测更改
delimiter $$
CREATE TRIGGER `vc`.`Articles_Updated_trigger`
BEFORE UPDATE
ON `Articles` FOR EACH ROW
BEGIN
IF OLD.Published = FALSE AND NEW.Published = TRUE THEN
SET new.PublishingdDate = CURRENT_TIMESTAMP;
END IF;
END$$
DELIMITER ;
推荐阅读
- python - Python Pandas - 如何按具有多个值的多列中的值按计数分组
- flutter - 一旦使用 bloc 触发事件,底部工作表就会重复显示
- python - 如何使用列表理解创建这个嵌套列表?
- python - 使用 for setup.cfg 为 github 的dependabot 声明依赖
- node.js - 无法安装 npm 模块 material-design-icons
- python - Django:要匹配的 URL 反向自定义参数?
- android - 在基于 Xml 的活动中显示使用 ComposeView 制作的自定义对话框 - Jetpack Compose - Android
- python - 如何将 pybind11 模块安装到特定目录
- javascript - 单击时显示电子邮件地址
- anylogic - 如何获得蒙特卡洛实验中每次模拟运行的种子值?