在MySQL的触发,我写了这样的条款:为什么这个CASE ... END CASE子句在MySQL的触发器中导致错误提示?
CASE v_index
WHEN 1 THEN:
UPDATE `device` SET `filter1_left` = `filter1_left` + 1 WHERE `id` = 100;
WHEN 2 THEN:
UPDATE `device` SET `filter2_left` = `filter2_left` + 1 WHERE `id` = 100;
WHEN 3 THEN:
UPDATE `device` SET `filter3_left` = `filter3_left` + 1 WHERE `id` = 100;
WHEN 4 THEN:
UPDATE `device` SET `filter4_left` = `filter4_left` + 1 WHERE `id` = 100;
WHEN 5 THEN:
UPDATE `device` SET `filter5_left` = `filter5_left` + 1 WHERE `id` = 100;
END CASE;
但我不能成功地创建这个触发器,收到以下错误提示:
错误代码:1064 你有一个错误你的SQL语法;检查对应于你的MySQL服务器版本使用附近的正确语法手册“:UPDATE device
SET filter1_left
= filter1_left
+ 1”在第17行
顺便说一下,我有三个问题:
我觉得上面的那句话有点冗长。是否有任何方法可以简化它并更优雅地实现相同的目标?
可以在'THEN'之后省略冒号吗?
我可以把UPDATE ...语句放在'WHEN ... THEN'的同一行吗?
在此先感谢!
“THEN”后没有冒号':',所以删除所有冒号 –
非常感谢!它解决了我的问题。但是我对“Beginning PHP and MySQL From Novice to Professional”一书感到困惑(由W. Jason Gilmore,Apress 2010撰写),其中说'THEN'后应该有一个冒号。哇,它怎么可能? @RacilHilan – Benson