我已经在我自己的 MySQL 5.5.15 数据库和SQL Fiddle的 5.1.61、5.5.30 和 5.6.6 版本中尝试了您的语法,并且在所有这些数据库中都运行良好。点击这里查看。
因此,首先,请仔细检查您的列名是否正确。
如果你这样做,那么它可能与你的 MySQL 版本有关。在此处CREATE TRIGGER
的文档中,有一些示例使用类似于这样的不寻常语法将值放入另一个表中...INSERT
NEW
UPDATE
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;
未来读者的注意事项:请参阅下面关于超级特权的评论......