我在使用从 MySQL 触发器中的另一个表中选择的值更新表中的行时遇到问题。我的触发器看起来像这样
CREATE TRIGGER update_user_last_login
AFTER INSERT or UPDATE ON last FOR EACH ROW
BEGIN
DECLARE _user_id INTEGER;
SELECT user_id INTO _user_id FROM user_profile WHERE user_name = NEW.username;
UPDATE user set last_login = NEW.seconds WHERE id = _user_id;
END
我收到错误消息:
ERROR 1054 (42S22): Unknown column '_user_id' in 'where clause'
有人能给我指出正确的方向吗?
非常感谢, 米兰。
最佳答案
这是复合触发事件(INSERT 或 UPDATE
)的语法错误。尝试:
CREATE TRIGGER update_user_last_login
AFTER UPDATE ON last FOR EACH ROW ...
我认为 mysql 不支持同一触发器中的复合事件。您可以创建两个触发器,一个用于插入后,一个用于更新后。这两个触发器可以重复调用相同的代码或调用公共(public)存储过程。
关于MySQL 触发器 - 使用从另一个表中选择的值更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3617308/