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 触发器中,从而在触发器执行时记录相关操作的执行者信息。

MySQL 触发器中添加 Session 用户 ID 的方法 - updateshop 触发器示例

原文地址: https://www.cveoy.top/t/topic/pe8x 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录