有多个任务访问 表A(日志表) 查询,如果有数据就执行 插入表B的操作,然后删除表A的数据。发现表B经常有时间重复数据。并发导致。(是在一个任务插入表B的过程中还没有来得及删除表A数据时,另外一个任务又执行了,或同时执行)。下列解决方法是否可行?
在表A加一个字段lx,当任务查询表A中lx<>'T' 的数据,如果有数据时,先把lx字段修改为T,然后在执行插入表B操作,再删除表A数据。
多个任务会同时查询数据吗?还是按队列查询的。如果同时查询 就没办法解决了吧网上说可以加行级锁,能说说吗?
在表A加一个字段lx,当任务查询表A中lx<>'T' 的数据,如果有数据时,先把lx字段修改为T,然后在执行插入表B操作,再删除表A数据。
多个任务会同时查询数据吗?还是按队列查询的。如果同时查询 就没办法解决了吧网上说可以加行级锁,能说说吗?
delete from A where
if sql%rowcount >=1 then
insert B
如果事务失败就全部回滚
使用REPEATABLE READ隔离级别