MySQL 触发器中添加 Session 用户 ID 的方法 - updateshop 触发器示例
MySQL 触发器中添加 Session 用户 ID 的方法 - updateshop 触发器示例
本文介绍如何在 MySQL 触发器中添加 Session 用户 ID,并以 updateshop 触发器为例进行详细说明。
原始触发器代码
CREATE TRIGGER updateshop
AFTER UPDATE ON staff
FOR EACH ROW
BEGIN
IF(OLD.branchid != NEW.branchid OR OLD.deptid != NEW.deptid OR OLD.roleid != NEW.roleid OR NEW.state = 1) THEN
INSERT INTO shopkeeperchange(shopkeeperchange.sid,
shopkeeperchange.staffid,
shopkeeperchange.branchid,
shopkeeperchange.deptid,
shopkeeperchange.roleid,
shopkeeperchange.newbranchid,
shopkeeperchange.newdeptid,
shopkeeperchange.newroleid)
VALUES(DEFAULT,
OLD.staffid,
OLD.branchid,
OLD.deptid,
OLD.roleid,
NEW.branchid,
NEW.deptid,
NEW.roleid);
END IF;
END;
添加 Session 用户 ID 的方法
要将 Session 中的用户 ID 添加到触发器中,可以使用 MySQL 的内置函数 CURRENT_USER() 来获取当前会话的用户名。在 INSERT 语句中,可以将 CURRENT_USER() 作为 staffid 的值插入到 shopkeeperchange 表中。
更新后的触发器代码
CREATE TRIGGER updateshop
AFTER UPDATE ON staff
FOR EACH ROW
BEGIN
IF(OLD.branchid != NEW.branchid OR OLD.deptid != NEW.deptid OR OLD.roleid != NEW.roleid OR NEW.state = 1) THEN
INSERT INTO shopkeeperchange(shopkeeperchange.sid,
shopkeeperchange.staffid,
shopkeeperchange.branchid,
shopkeeperchange.deptid,
shopkeeperchange.roleid,
shopkeeperchange.newbranchid,
shopkeeperchange.newdeptid,
shopkeeperchange.newroleid)
VALUES(DEFAULT,
CURRENT_USER(),
OLD.branchid,
OLD.deptid,
OLD.roleid,
NEW.branchid,
NEW.deptid,
NEW.roleid);
END IF;
END;
在上述代码中,CURRENT_USER() 函数用于获取当前会话的用户名,并将其作为 staffid 的值插入到 shopkeeperchange 表中。
总结
通过使用 CURRENT_USER() 函数,您可以轻松地将 Session 用户 ID 添加到 MySQL 触发器中,从而在触发器执行时记录相关操作的执行者信息。
原文地址: https://www.cveoy.top/t/topic/pe8x 著作权归作者所有。请勿转载和采集!