【问题标题】:TRIGGER synax error mysql said #1303 - Can't create a trigger from within another stored routine - phpmyadminTRIGGER 语法错误 mysql 说 #1303 - 无法从另一个存储的例程中创建触发器 - 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 ' 附近使用正确的语法

【问题讨论】:

    标签: triggers phpmyadmin


    【解决方案1】:

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

    Image

    【讨论】:

    • 谢谢,但还是说错误,新代码已编辑,如果您了解正确的语法,请指导我。
    • 你在(SELECT finished FROM autoad之后缺少)
    猜你喜欢
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2016-10-03
    • 1970-01-01
    • 2020-11-22
    相关资源
    最近更新 更多