MySQL 触发器 - 使用从另一个表中选择的值更新表

标签 mysql triggers mysql-error-1054

我在使用从 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/

相关文章:

mysql - 如何根据先前的值更新列?

entity-framework - EF 6 未检索触发器更新字段

MySQL 更新时触发总和

php - #1054 - 'domain.com' 中的未知列 'field list'

SQL连接问题

MYSQL存储过程字符串参数列表和using IN子句

mysql - 循环遍历sql查询结果

Scala 中过程调用的 MySQL 和 JDBC 缓存(?)问题

c# - 使用触发器作为资源

我的查询中的 MySQL 未知列