我正在尝试在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
值?
答案 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_resort
或reputation
的值,请使用OLD
关键字:
...
VALUES (CURRENT_TIMESTAMP, OLD.id_resort, OLD.reputation)
此外,我认为您不能在主键列中插入NULL
。如果您将id
表上的audit
设置为自动递增,则只需从id
语句中省略INSERT
列。