创建MariaDB触发器遇SQL Error [1064] [42000],求解决方案
解决MariaDB触发器创建时的1064语法错误
这个错误的核心原因是MySQL/MariaDB默认使用分号(;)作为语句结束符,而你的触发器内部包含多个分号,数据库会在第一个分号处就认为整个CREATE TRIGGER语句结束,导致后续语法解析失败。
解决方法是临时修改语句分隔符,具体步骤如下:
- 先设置临时分隔符(比如
//),告知数据库用该符号作为整个语句的结束标记 - 编写完整的触发器代码
- 用临时分隔符结束触发器定义
- 恢复默认的分号分隔符
修改后的完整SQL代码:
DELIMITER // create trigger bi_validate_users before insert on users for each row begin if new.user = '' then signal sqlstate '45000' set message_text = 'User must not be blank'; end if; if new.password = '' then signal sqlstate '45000' set message_text = 'Password must not be blank'; end if; end // DELIMITER ;
额外说明:
- 临时分隔符可选用除分号外的任意符号(比如
$$也较为常用),只要不与代码内部的符号冲突即可 - 触发器定义完成后务必恢复默认分隔符,避免后续执行SQL语句时出现异常
内容的提问来源于stack exchange,提问作者KplnMoon
相关产品推荐
相关产品推荐

