TRIGGER 语法错误 mysql 说 #1303 - 无法从另一个存储的例程中创建触发器 - phpmyadmin

Posted

技术标签:

【中文标题】TRIGGER 语法错误 mysql 说 #1303 - 无法从另一个存储的例程中创建触发器 - phpmyadmin【英文标题】:TRIGGER synax error mysql said #1303 - Can't create a trigger from within another stored routine - phpmyadmin 【发布时间】:2019-05-28 16:23:54 【问题描述】:

我有一个名为“autoad”的数据库表,2 列是“allads”和“finished”,我想在更新查询之前执行 chek if value(finished) > value(allads) 然后抛出异常,我使用了触发器为此,但是当 pat 进入 phpmyadmin 时会出现错误: mysql 说 #1303 - 无法从另一个存储的例程中创建触发器

CREATE TRIGGER before_insert_finished BEFORE INSERT ON autoad
FOR EACH ROW
BEGIN
   SET @CountOfCar = (SELECT allads FROM autoad)
   SET @CountOfCar2 = (SELECT finished FROM autoad
   IF @CountOfCar2>@CountOfCar THEN
ON UPDATE NO ACTION
END

已编辑:

在 phpmyadmin gui 中只想要代码主体,在 begin....end 之间,我现在尝试:

BEGIN
   SET @CountOfCar = (SELECT allads FROM autoad)
   SET @CountOfCar2 = (SELECT finished FROM autoad
   IF @CountOfCar2>@CountOfCar THEN
ON UPDATE NO ACTION
END

错误: MySQL 说:#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 'SET @CountOfCar2 = (SELECT finished FROM autoad IF @CountOfCar2>@CountOfCar ' 附近使用正确的语法

【问题讨论】:

【参考方案1】:

在 phpMyAdmin GUI 中创建触发器时,只需在“定义”面板中的 BEGIN ... END 部分之间输入触发器的主体即可。

Image

【讨论】:

谢谢,但还是说错误,新代码已编辑,如果您了解正确的语法,请指导我。 你在(SELECT finished FROM autoad之后缺少)

以上是关于TRIGGER 语法错误 mysql 说 #1303 - 无法从另一个存储的例程中创建触发器 - phpmyadmin的主要内容,如果未能解决你的问题,请参考以下文章

Trigger IF语句中的MySQL语法错误?

mysql之触发器trigger

130 MySQL记录操作

MySQL 触发器trigger

mysql之触发器trigger

mysql之触发器trigger