标题: Could not do a physical-order read to fetch next row [打印本页] 作者: bszwxq777 时间: 2017-05-09 11:48 标题: Could not do a physical-order read to fetch next row 进程读取数据正常(有时会读出空数据),在移数据和删除数据时偶尔会抛出Could not do a physical-order read to fetch next row的异常,
如果在读数据之前执行一下:set lock mode to wait 10;//意思是设置锁等待时间为10ms ,那么就不会出现任何异常,
设置锁等待为什么就能解决这种异常问题,是什么原理?望大神解惑~ 作者: liaosnet 时间: 2017-05-09 13:18
其他会话锁住了当前会话需要访问的记录。因此,当前会话会报无法读取该记录。
使用锁等待时,可以等其他会话完成操作,并释放锁资源。。
有A ,B两张表,B是A的历史表,我的操作流程如下:步骤一:select first 50 * from A where status=0;//ID唯一键,假设为变量:b00
步骤二:insert into B select * from A where ID=:b00;
步骤三:delete from A where ID=:b00;
直接这样操作时,步骤一偶尔会读出超过50条的非法数据,不知道是什么原因,步骤二和步骤三会抛出如题异常;
如果在步骤一前面加上set lock mode to wait 10,这样基本就不会有上述问题出现