有没有办法追踪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;
那里有什么问题?
感谢。
答案 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。