如果 '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
有趣的第二种类型的查询没有“and column1='foo'”
select count(*) into isSomething from ... where id = NEW.id
给出正确的结果:3,好像 'foo' 不会出现在结果中。