如果'foo'在column1值中,我想将'isSomething'设置为1,否则'isSomething'为0
问题是:同一个查询从控制台和触发器给出不同的结果。 控制台版本可以提供良好的结果。
(子查询中的一切都是一样的,在触发器中我总是得到相同的New.id! - 测试用例)
-----TRIGGER (AFTER UPDATE)
...
DECLARE isSomething INT DEFAULT 0;
select if('foo' IN (select column1 from ...where id=NEW.id),1,0)
INTO isSomething;
...
LOG: isSomething:0
-----CONSOLE
select if('foo' IN (select column1 from ...where id=232),1,0)
into @isSomething;
select @isSomething;
...
CONSOLE: 1 (good result!!!)
评论:我也尝试了以下查询
select count(*) into isSomething from ... where id = NEW.id and column1='foo'
它的行为与第一个查询相同。
更新1
有趣的是第二种类型的查询没有“和column1 ='foo'”
select count(*) into isSomething from ... where id = NEW.id
给出正确的结果:3,好像'foo'不会出现在结果中。
答案 0 :(得分:1)
<强>解强>
我不知道为什么,但如果我使用表别名(这里:ft),那么查询有效,结果很好......
select count(*)
into isSomething
from footable ft WHERE ft.column1 = 'foo' AND ft.id = NEW.id ....;
感谢大家的努力!
Cs中。