我真的希望有人可以帮助我解决这个问题,因为它已经困扰了我好几天了。我的用户表上有一个插入后触发器,它在每次插入后将一条记录插入到审计表中。如果我在命令行上手动执行插入语句,这可以正常工作。但是,当我的 Web 表单插入到表中时,插入到审计表中的所有值都是空值。我在想这可能是权限问题,所以我将 CURRENT_USER() 和 USER() 添加到要插入到审计表中的触发器中。它显示触发器正在由“管理员”用户执行,该用户是触发器的所有者。
这是我的触发器:
DELIMITER ^^
CREATE TRIGGER UsersInsert AFTER INSERT ON Users
FOR EACH ROW
BEGIN
INSERT INTO `users_audit` (`username`, `address`, `email`)
VALUES
(USER(), NEW.address, NEW.email);
END
^^
这将在审计表中插入以下内容:admin@localhost, null, null
以下是管理员用户的权限:
GRANT ALL PRIVILEGES ON `MyDB`.* TO 'admin'@'localhost' WITH GRANT OPTION
就像我说的,它可以从 mysql 命令行完美运行。但由于某种原因,当从 Web 表单执行时,“新”值都是空值。
请帮忙。提前致谢。
2013 年 2 月 6 日更新:
我尝试了类似的触发器,但使用“更新后”并且它工作正常。所以这个问题被隔离到插入。这也证明这不是权限问题。