我的触发器无法创建,我无法理解为什么

时间:2013-01-18 07:28:02

标签: mysql sql

我正在尝试创建此触发器,但我收到此错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'case where artcStackId = new.artcStackId' at line 7

这是失败的触发器

SET new.artcPublicId = 
 case 
 when new.artcCountry = 'US' then concat(91,new.artcStackId)
 when new.artcCountry = 'UK' then concat(92,new.artcStackId)
 when new.artcCountry = 'CA' then concat(93,new.artcStackId)
 else concat(11,new.artcStackId)
 end case
 where artcStackId = new.artcStackId

这是可行的触发器

SET new.artcPublicId = 
case 
when new.artcCountry = 'US' then concat(91,new.artcStackId)
when new.artcCountry = 'UK' then concat(92,new.artcStackId)
when new.artcCountry = 'CA' then concat(93,new.artcStackId)
else concat(11,new.artcStackId)
end

当我添加这些额外的位时,它会失败。

2 个答案:

答案 0 :(得分:0)

您的第一个触发器有语法错误:

end case

应该只是

end

即删除尾随的“案例”

编辑:

我刚注意到你有条件:where artcStackId = new.artcStackId 你不能这样做。您只能修改new.语法引用的当前行。

您必须完全删除where子句,因为您只能更新正在插入/更新的行。

答案 1 :(得分:0)

没有提及你的where condition.i认为它应该像where new.artcStackId = new.artcStackId