Mysql 有人能告诉我create触发器语法有什么问题吗?

Mysql 有人能告诉我create触发器语法有什么问题吗?,mysql,triggers,Mysql,Triggers,我第一次尝试使用触发器 当我尝试使用以下命令创建触发器时: CREATE TRIGGER t_foldersPrivate BEFORE DELETE ON foldersPrivate FOR EACH ROW BEGIN DELETE FROM programs WHERE folderType = '0' AND folderID = OLD.ID; END; 我收到以下错误: `1064 - You have an error in your SQL syntax; check t

我第一次尝试使用触发器

当我尝试使用以下命令创建触发器时:

CREATE TRIGGER t_foldersPrivate BEFORE DELETE ON foldersPrivate
FOR EACH ROW BEGIN
 DELETE FROM programs WHERE folderType = '0' AND folderID = OLD.ID; 
END;
我收到以下错误:

`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 '' at line 3`
(mysql 5.1.37)


如果我去掉delete语句,createtrigger语句就可以正常工作。所以我想这一定与此有关。但就我个人而言,我不确定什么…

您应该更改分隔符

大概是这样的:

DELIMITER $$

CREATE TRIGGER t_foldersPrivate BEFORE DELETE ON foldersPrivate
FOR EACH ROW BEGIN
 DELETE FROM programs WHERE folderType = '0' AND folderID = OLD.ID; 
END$$

DELIMITER ;

此外,还应单独检查删除查询。工作正常吗?

是的,delete语句单独工作正常。我尝试使用上面的代码,但是它会导致phpMyAdmin崩溃。在我重新启动mysql之前,整个过程一直处于停滞状态……我觉得在“before”事件中调用“OLD.ID”是错误的。谢谢你。尝试这样做:从folderType='0'和folderID=ID的程序中删除;