MySQL - 在第 1 行附近创建触发器错误 1064

Posted

技术标签:

【中文标题】MySQL - 在第 1 行附近创建触发器错误 1064【英文标题】:MySQL - Create trigger error 1064 near line 1 【发布时间】:2021-10-05 00:26:53 【问题描述】:

我正在尝试在 mysql 8.0 数据库上创建一个新触发器。 通过 MySQL Workbench 申请时出现以下错误...

ERROR 1064:您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在第 1 行使用 near ''

这里是触发脚本...

DROP TRIGGER IF EXISTS tr_set_location_engagement;
DELIMITER $$
CREATE TRIGGER tr_set_location_engagement
BEFORE INSERT ON v2_nc_nip_cap_engagement
FOR EACH ROW
BEGIN
SET NEW.water_system_id = (SELECT water_system_id FROM v2_nc_registered_water_systems WHERE NEW.system_name = water_system_name);
SET NEW.province_id = (SELECT province_id FROM v2_nc_province WHERE NEW.province_name = province_name);
SET NEW.island_id = (SELECT island_id FROM v2_nc_island WHERE NEW.island_name = island_name);
SET NEW.area_council_id = (SELECT area_council_id FROM v2_nc_area_council WHERE NEW.area_council_name = area_council_name);
END $$
DELIMITER ;

非常感谢任何帮助。

【问题讨论】:

我认为没有任何错误。你能也分享一下表格结构吗? 触发文本在语法上是正确的。 dbfiddle.uk/… 检查您的连接器是否允许多查询以及是否允许/支持 DELIMITER 命令(这是 CLI 命令,而不是 SQL 语句)。 如果您从其他地方复制/粘贴代码,您可能会有多余的不可打印字符。您可以尝试删除第一个字符并再次手动输入(或将整个内容复制到 Unicode inspector 并查看显示的内容)。 【参考方案1】:

感谢大家的帮助。问题是我使用 MySQL Workbench 中的触发器(对象)编辑器来应用触发器。在 Workbench 中使用 SQL IDE 应用触发器时,触发器应用成功。

【讨论】:

以上是关于MySQL - 在第 1 行附近创建触发器错误 1064的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 触发语法错误

空字符串无法解释的MySQL错误#1064创建更新触发器后?

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法

第 14 行 '' 附近的 SQL 语法错误

MySQL 创建函数返回错误

触发器错误(创建触发器)