首页 > 解决方案 > TRIGGER 语法错误 mysql 说 #1303 - 无法从另一个存储的例程中创建触发器 - phpmyadmin

问题描述

我有名称为“autoad”的 db 表,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 ' 附近使用正确的语法

标签: triggersphpmyadmin

解决方案


当您在 phpMyAdmin GUI 中创建触发器时,您只需要在BEGIN ... END部件之间的定义面板中输入触发器的主体。

图片


推荐阅读