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

Unexplainable MySQL Error #1064 for Empty String On creating After Update Trigger?

我 运行 MySQL 的服务器版本为:10.1.34-MariaDB(在 XAmpp 7.2.7-0-VC15-installer 中分发)Windows 8.1 机器,在 Google Chrome 上使用 PhpMyadmin 访问 Mysql 数据库,我得到这个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 4

为此创建触发器语法:

DROP TRIGGER IF EXISTS Tsopd_main_AfterUpdate;
CREATE TRIGGER Tsopd_main_AfterUpdate AFTER UPDATE
ON sopd_main FOR EACH ROW 
BEGIN
SET @jns = 1;
END

当我这样更改代码时:

DROP TRIGGER IF EXISTS Tsopd_main_AfterUpdate;
CREATE TRIGGER Tsopd_main_AfterUpdate AFTER UPDATE
ON sopd_main FOR EACH ROW 
BEGIN

END

或者像这样:

DROP TRIGGER IF EXISTS Tsopd_main_AfterUpdate;
CREATE TRIGGER Tsopd_main_AfterUpdate AFTER UPDATE
ON sopd_main FOR EACH ROW 
BEGIN
-- SET @jns = 1;
END

成功了。

谁能帮我看看哪里出了问题? 谢谢。

您需要使用 DELIMITER 指令来更改查询分隔符,因此您可以在触发器定义中使用 ;

DELIMITER $$
DROP TRIGGER IF EXISTS Tsopd_main_AfterUpdate$$
CREATE TRIGGER Tsopd_main_AfterUpdate AFTER UPDATE
ON sopd_main FOR EACH ROW 
BEGIN
SET @jns = 1;
END$$
DELIMITER ;