MySQL Trigger - обновить таблицу со значением, выбранным из другой таблицы - PullRequest
1 голос
/ 01 сентября 2010

У меня проблемы с обновлением строки в таблице со значением, выбранным из другой таблицы в MySQL Trigger. Мой триггер выглядит так

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'

Может ли кто-нибудь указать мне правильное направление, пожалуйста?

Большое спасибо, Милан.

Ответы [ 3 ]

1 голос
/ 01 сентября 2010

Это синтаксическая ошибка в сложном событии триггера (INSERT or UPDATE). Попробуйте:

CREATE TRIGGER update_user_last_login
    AFTER UPDATE ON last FOR EACH ROW ...

Я не думаю, mysql поддерживает составные события в одном и том же триггере. Вы можете создать два триггера, один для после вставки и один для после обновления. Эти два триггера могут вызывать один и тот же код в двух экземплярах или вызывать общую хранимую процедуру.

0 голосов
/ 07 октября 2016

Попробуйте, как показано ниже

UPDATE user set last_login = NEW.seconds WHERE id = :_user_id;
0 голосов
/ 01 сентября 2010

Вы можете вырезать промежуточную переменную следующим образом ...

UPDATE user
    SET last_login = NEW.seconds
    WHERE id = (SELECT user_id
                    FROM user_profile
                    WHERE user_name = NEW.username);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...