为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:7.6.0.137_20190218
【操作系统】:winserver2012
【CPU】:e5
【问题描述】*:
update执行成功但是数据没修改成功
查过没触发器,没死锁,批量更新一堆数据,就是有几条死活更新不了。
单独拿出来更新也是提示执行成功,再查询还是原来的值。
[执行语句1]:
update table_a set qq=‘17845’ where id=192123;
执行成功, 执行耗时13毫秒. 执行号:
17719727 影响了1条记录
[执行语句1]:
update table_a set qq=17845 where id=192123;
执行成功, 执行耗时13毫秒. 执行号:
17719727 影响了1条记录
有commit
带分号和不带分号的也试过了,偶尔会更新成功,但是select多几次又变回原来的值了
没找到问题,很迷。
补充一下执行计划
update执行成功后,立刻执行select,有时候是会出现正确结果,有时候又是NULL,可以看出,update语句是成功执行过的,后面要不是被回滚了,要不是被其他语句重新update回去了,暂时找到几个触发器和这表有关系,但都不更新这个字段,在尝试一个一个删除后再更新,看看是哪个影响了
------------------------------------后续补充
查询过死锁,select * from v$lock。也没问题。
看了所有触发器,也没问题,实在没办法,就想着删除后重新插入再修改看看。
[执行语句1]:
delete table_a where id=192123;
执行成功, 执行耗时6毫秒. 执行号:18886015;
影响了1条记录
1条语句执行成功
提交成功
发现竟然删不掉,删除几次,COMMIT,这条记录还在,当然也不能插入,因为有ID唯一
完全没办法了
另外还有个问题,表是没更新的,但是同一条查询语句,连续查询多次后,结果会偶尔出现不同,出现的错误数据基本都是固定范围内,这?
怀疑并没有真正的commit,打开sql日志,看看里面的演绎吧。