【问题标题】:why is "else" on the trigger considered wrong?为什么触发器上的“else”被认为是错误的?
【发布时间】:2019-05-27 22:57:33
【问题描述】:

我写了以下代码

DELIMITER $$

CREATE TRIGGER bm_keuangan 
AFTER UPDATE ON pembayaran_project FOR EACH ROW
BEGIN
DECLARE nama_project varchar(100);
DECLARE cek_di_keuangan varchar(100);
IF (!(isnull(NEW.deleted_at))) THEN
    UPDATE keuangan SET keuangan.deleted_at = now() WHERE keuangan.ref = NEW.id AND keuangan.jk_id = 5;
ELSE

END IF;

END $$
DELIMITER ;

我得到了错误:

#1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 'END IF; 附近使用的正确语法;

END' 在第 10 行

【问题讨论】:

  • 因为你没有在 else 块中做任何事情。

标签: mysql triggers phpmyadmin


【解决方案1】:

你的 ELSE 块是空的,这在 mysql 中是不允许的。您应该从代码中删除关键字 ELSE,如下所示:

DELIMITER $$

CREATE TRIGGER bm_keuangan 
AFTER UPDATE ON pembayaran_project FOR EACH ROW
BEGIN
DECLARE nama_project varchar(100);
DECLARE cek_di_keuangan varchar(100);
IF (!(isnull(NEW.deleted_at))) THEN
    UPDATE keuangan SET keuangan.deleted_at = now() WHERE keuangan.ref = NEW.id AND keuangan.jk_id = 5;

END IF;

END $$
DELIMITER ;

【讨论】:

    【解决方案2】:

    来自docs(强调我的):

    IF search_condition THEN statement_list
        [ELSEIF search_condition THEN statement_list] ...
        [ELSE statement_list]
    END IF
    

    每个statement_list 由一个或多个SQL 语句组成; 不允许使用空的statement_list

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多