1

我对在 MySQL SO AH 中制作触发器很陌生。这是我的问题代码行:

DELIMITER |
CREATE TRIGGER trigME BEFORE INSERT ON user_accounts
FOR EACH ROW
BEGIN
INSERT INTO user_logs(user_id,date_entry) values (NEW.user_id,now());
END |

它返回一个错误说:

错误 1054 (42S22) 'NEW' 中的未知列 'user_id'

花了大约几个小时寻找解决方案来帮助这些,请帮助我:))

4

1 回答 1

0

我已经在我自己的 MySQL 5.5.15 数据库和SQL Fiddle的 5.1.61、5.5.30 和 5.6.6 版本中尝试了您的语法,并且在所有这些数据库中都运行良好。点击这里查看。

因此,首先,请仔细检查您的列名是否正确。

如果你这样做,那么它可能与你的 MySQL 版本有关。在此处CREATE TRIGGER的文档中,有一些示例使用类似于这样的不寻常语法将值放入另一个表中...INSERTNEWUPDATE

CREATE TRIGGER trigME BEFORE INSERT ON user_accounts
  FOR EACH ROW
  BEGIN
    INSERT INTO user_logs SET user_id = NEW.user_id, date_entry = NOW();
  END;

或者你也可以尝试读入一个变量new_user_id并在你的INSERT...

CREATE TRIGGER trigME BEFORE INSERT ON user_accounts
  FOR EACH ROW
  BEGIN
    DECLARE new_user_id INT;
    SET new_user_id = NEW.user_id;
    INSERT INTO user_logs(user_id, date_entry) values (new_user_id, NOW());
  END;

未来读者的注意事项:请参阅下面关于超级特权的评论......

于 2013-05-26T17:58:05.830 回答