你的触发器一共用了3处IF THEN。
其中2,3处IF THEN的逻辑讲不通的。
第三个IF THEN嵌套在第二个IF THEN中间,那么就是说
也必须满足substr(CalledPhonenum,1,1)!='0'的条件。
所以永远不会进入(substr(CalledPhonenum,1,1)='0'
And substr(CalledPhonenum,2,1)!='0')的逻辑中。
那么这段逻辑执行完,Rate=InterRate。
这是一。
第二,substr(CalledPhonenum,1,1)='0'没有任何逻辑处理,
Rate=null,也会导致这个问题。你应该修改为:
if(substr(CalledPhonenum,1,1)!='0') Then
Rate:=CityRate;
elsIf(substr(CalledPhonenum,1,1)='0' And substr(CalledPhonenum,2,1)!='0') Then
Rate:=DomesticRate;
Else
Rate:=InterRate;
End If;如果还出现这样的现象,我想你可能需要从数据方面着手判断了。
其中2,3处IF THEN的逻辑讲不通的。
第三个IF THEN嵌套在第二个IF THEN中间,那么就是说
也必须满足substr(CalledPhonenum,1,1)!='0'的条件。
所以永远不会进入(substr(CalledPhonenum,1,1)='0'
And substr(CalledPhonenum,2,1)!='0')的逻辑中。
那么这段逻辑执行完,Rate=InterRate。
这是一。
第二,substr(CalledPhonenum,1,1)='0'没有任何逻辑处理,
Rate=null,也会导致这个问题。你应该修改为:
if(substr(CalledPhonenum,1,1)!='0') Then
Rate:=CityRate;
elsIf(substr(CalledPhonenum,1,1)='0' And substr(CalledPhonenum,2,1)!='0') Then
Rate:=DomesticRate;
Else
Rate:=InterRate;
End If;如果还出现这样的现象,我想你可能需要从数据方面着手判断了。
结果useramount没有清空,不过结果所有的useramount都被更新了,我要的结果是只有新插入的纪录对应的useramount被更新。