如何跟踪mysql触发器或帮助这个

时间:2010-06-24 22:20:46

标签: mysql string triggers

有没有办法追踪MySql触发器?我坚持使用下面的那个。

我想在插入连接其他两列之前计算一列,但是有问题计算值总是为null,我还需要检查一列是否有逗号分隔值,在这种情况下我只想要第一列,这里是代码


BEGIN 
    declare pos int;
    pos = locate(',',new.Admin1Code, 1);
    if (pos = -1) then
        set new.StateCode = Concat(New.CountryCode,'.',New.Admin1Code);
    else
        set new.StateCode = Concat(New.CountryCode,'.',substring(New.Admin1Code,1,pos));
    end if;   
END;

那里有什么问题?

感谢。

1 个答案:

答案 0 :(得分:0)

LOCATE永远不会返回-1 - 如果您尝试:

SELECT LOCATE(',', 'abbc')

...它返回0.使用:

if (pos > 0) then
  set new.StateCode = Concat(New.CountryCode,'.',substring(New.Admin1Code, 1, pos));        
else
  set new.StateCode = Concat(New.CountryCode,'.',New.Admin1Code);
end if;

文档尽可能多地说:

  

如果substr不在str中,则返回0。