MySQL CREATE TRIGGER,语法错误。我做错了什么?

标签 mysql stored-procedures triggers concatenation

 DELIMITER ||
CREATE TRIGGER `monthly_insert` BEFORE INSERT ON `history_monthly`
FOR EACH ROW
BEGIN
    NEW.`uid` = CONCAT(OLD.`year`, OLD.`month`, OLD.`charactersId`);
END;
||
DELIMITER ;

它返回一个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.`uid` = CONCAT(OLD.`year`, OLD.`month`, OLD.`charactersId`);
END' at line 4 

这是我第一次使用触发器,我尽我所能尝试寻找灵魂,但我失败了;<

最佳答案

你需要在这一行添加单词SET:

SET NEW.`uid` = CONCAT(OLD.`year`, OLD.`month`, OLD.`charactersId`);

此外,正如评论者所指出的,BEFORE INSERT 触发器中没有 OLD 值。

关于MySQL CREATE TRIGGER,语法错误。我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948944/

相关文章:

mysql - MySQL select 语句的 QSlQuery 失败

oracle - 如何显示存储过程的输出?

mysql - 使用触发器自动增量列后不连续

MySQL触发器更新动态列

php - sql 'is not' ( <> ) 不工作

javascript - 当 Mysql 数据库更改状态时使用 Push.js 推送通知

java - MySQL数据库管理

mysql - 繁重的存储过程可以等待另一个 SP 完成吗?

mysql - 过程执行失败 1221 - UPDATE 和 LIMIT 使用不正确

触发器与 JPA 事件