2

我一直在网上寻找答案,但大多数人使用编程语言来回答。我目前正在运行一个 MySQL 服务器并且想要跟踪一个staff表,当一个工作人员的位置被更新时,触发器应该将值插入到staff_audit表中。现在最大的问题是如何访问用户 ID?

到目前为止的代码:

CREATE TRIGGER staff_aft_update 
  AFTER UPDATE ON staff 
  FOR EACH ROW 
    INSERT INTO staff_audit 
      ( sau_st_staffno, sau_st_position_before, 
        sau_st_position_after, sau_user_id, ts) 
    VALUES 
      ( old.st_staffno, old.st_position, 
        new.st_position, userid);

userid是我想要插入 ID 的地方。提前致谢。

4

2 回答 2

0

如果我理解正确,您想要userid执行UPDATE? 如果那userid是 MySQL 用户名,只需使用SUBSTRING_INDEX(USER(),'@',1); 否则,您将需要userid从您的应用程序代码中提供。

于 2012-05-09T08:50:45.497 回答
-1

以下链接应该可以帮助您找到答案。这给出了 MySQL 中的信息函数列表..

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html

实际上,您需要使用信息函数 USER() 需要根据您需要实现的逻辑从应用程序代码中传递用户 ID。

对于您的要求,您确实需要截断从“@”符号开始的所有内容,因为如果您使用的是信息功能,则功能用户的格式是 user@localhost ....希望这会有所帮助

于 2012-05-09T09:39:41.430 回答