0

我有字段表:

  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 服务,可以通过网站更改记录 - 我想添加到触发器的那些用户。

4

2 回答 2

1

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

于 2013-08-29T20:15:17.470 回答
0

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

于 2013-08-29T19:52:47.400 回答