Phpmyadmin 中的更新触发器之前如何获取更新的值
Posted
技术标签:
【中文标题】Phpmyadmin 中的更新触发器之前如何获取更新的值【英文标题】:Before Update Trigger in Phpmyadmin how to get updated values 【发布时间】:2019-08-16 03:49:05 【问题描述】:我试图在 phpmyadmin 中获得一个触发器,该触发器将在更新特定表之前和之后创建具有特定列值 (reputation
) 的审计。
类似:
CREATE DEFINER=`test`@`%`
TRIGGER `monitor update reputation`
BEFORE UPDATE ON `game_resorts`
FOR EACH ROW
INSERT INTO `audit` (`id`, `datetime`, `id_resort`, `reputation`)
VALUES (NULL, CURRENT_TIMESTAMP, id_resort, reputation)
主要问题是如何检索将要更新的id_resort
;然后是reputation
值?
【问题讨论】:
【参考方案1】:在 mysql 中,您将使用 NEW
关键字,所以我假设使用 phpmyadmin 也是如此。
例如:
CREATE DEFINER=`test`@`%`
TRIGGER `monitor_update_reputation` //don't use spaces in a trigger name
BEFORE UPDATE ON `game_resorts`
FOR EACH ROW
INSERT INTO `audit` (`datetime`, `id_resort`, `reputation`)
VALUES (CURRENT_TIMESTAMP, NEW.id_resort, NEW.reputation)
如果您想在更新之前获得id_resort
或reputation
的值,可以使用OLD
关键字:
...
VALUES (CURRENT_TIMESTAMP, OLD.id_resort, OLD.reputation)
另外,我认为您不能将NULL
插入主键列。如果audit
表上的id
设置为自动递增,您可以简单地从INSERT
语句中省略id
列。
【讨论】:
以上是关于Phpmyadmin 中的更新触发器之前如何获取更新的值的主要内容,如果未能解决你的问题,请参考以下文章
phPmyAdmin,如何创建一个触发器,当有人更新一行中的任何列时,它将在特定列中添加一个“1”