0

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

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

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

4

2 回答 2

0

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

end case

应该只是

end

即删除尾随的“案例”

编辑:

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

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

于 2013-01-18T07:33:34.930 回答
0

没有提到你的 where 条件。我认为它应该是这样的 where new.artcStackId = new.artcStackId

于 2013-01-18T07:47:31.033 回答