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

时间:2013-08-29 19:44:31

标签: php mysql triggers

我有字段表:

  1. ID
  2. DATA1
  3. DATA2
  4. 接下来我想设置触发器,在更新后写入日志表更改:

    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服务,具有多个注册用户,可以通过网站进行更改记录 - 我想添加的用户触发。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)