【问题标题】: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 行
【问题讨论】:
标签:
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。