在Phpmyadmin中的更新触发器之前,如何获取更新的值

时间:2019-03-25 20:09:55

标签: triggers phpmyadmin

我正在尝试在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 个答案:

答案 0 :(得分:0)

在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_resortreputation的值,请使用OLD关键字:

...
VALUES (CURRENT_TIMESTAMP, OLD.id_resort, OLD.reputation)

此外,我认为您不能在主键列中插入NULL。如果您将id表上的audit设置为自动递增,则只需从id语句中省略INSERT列。