我正在尝试创建此触发器,但我收到此错误:
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
当我添加这些额外的位时,它会失败。
答案 0 :(得分:0)
您的第一个触发器有语法错误:
end case
应该只是
end
即删除尾随的“案例”
我刚注意到你有条件:where artcStackId = new.artcStackId
你不能这样做。您只能修改new.
语法引用的当前行。
您必须完全删除where子句,因为您只能更新正在插入/更新的行。
答案 1 :(得分:0)
没有提及你的where condition.i认为它应该像where new.artcStackId = new.artcStackId