无法解释 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 ;
我 运行 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 ;