Mysql触发器变量-查找更新用户


Mysql trigger variable - find updating user

我有一个包含字段的表:

  1. id
  2. 数据1
  3. 数据2

下一步,我想设置更新后写入日志表更改的触发器:

CREATE TRIGGER `update_data` AFTER UPDATE on `data_table`
FOR EACH ROW
BEGIN
   IF (NEW.data1 != OLD.data1) THEN
       INSERT INTO data_tracking set old_value = OLD.data1, new_value = NEW.data1, field = "data1";
   END IF;
   -- similar for data2
END$$

我还想在data_tracking表中记录进行更改的用户,但是该用户不是触发触发器的原始UPDATE的一部分。这是一种让触发器知道需要记录哪些用户的方法?

这是一个基于PHP的web服务,有多个注册用户,可以通过网站对记录进行更改——我想添加到触发器的用户。

由于您想要使用仅PHP已知的用户名,因此,如果此信息仅在PHP中可用,MySql将无法知道是哪个用户触发了更改。这意味着您至少必须在每个update语句中传递用户,或者将其作为列添加到所有需要这种触发器的表中,或者通过存储过程执行所有更新,这些存储过程将用户名作为附加参数。然后你可以去掉所有的触发器,因为你无论如何都会使用可以进行日志记录和更新的存储过程。

使用CURRENT_USER,请参阅MySQL手册:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-用户