如何跟踪mysql触发器或帮助此触发器
有没有跟踪MySql触发器的方法?我被下面的一个卡住了 我想在insert连接其他两列之前计算一列,但问题是计算值总是null,我还需要检查一列是否有逗号分隔的值,在这种情况下,我只需要第一列,下面是代码如何跟踪mysql触发器或帮助此触发器,mysql,string,triggers,Mysql,String,Triggers,有没有跟踪MySql触发器的方法?我被下面的一个卡住了 我想在insert连接其他两列之前计算一列,但问题是计算值总是null,我还需要检查一列是否有逗号分隔的值,在这种情况下,我只需要第一列,下面是代码 BEGIN declare pos int; pos = locate(',',new.Admin1Code, 1); if (pos = -1) then set new.StateCode = Concat(New.CountryCode,'.'
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-如果您尝试:
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
小马:谢谢你的回答,我的pos=0,但我改为-1,因为它似乎不起作用,我现在意识到mysql正在以某种方式缓存值,我正在从文件到测试触发器进行批量加载,它总是显示相同的结果,这就是我认为它不起作用的原因,您以前对mysql有过同样的问题吗?@dev cu:我认为问题在于您正在测试的数据-mysql不会缓存这些值。或者可能是批量加载绕过了触发器?