如何解决将一些表记录复制到同一张表中会出现一些问题
DEFINE BUFFER bfSource FOR tableA.
DEFINE BUFFER bfTarget FOR tableA.
DO FOR bfTarget TRANSACTION:
FOR EACH bfSource WHERE bfSource.user_id = 0 NO-LOCK:
CREATE bfTarget.
BUFFER-copY bfSource EXCEPT id TO bfTarget.
ASSIGN
bfTarget.user_id = 1.
END.
END.
当我使用这个查询时,最后一次迭代会随机出现一些问题。 AVM 尝试查找下一条记录,但它们没有,有时 AVM 会找到新创建的记录(在 user_id 0 之前)。我有一些想法可以防止这种情况,很难找到,错误,但我不知道什么是最佳实践。我也尝试过更改事务作用域的位置,没有效果。
解决方法
目前我的解决方案是:
DEFINE BUFFER bfSource FOR tableA.
DEFINE BUFFER bfTarget FOR tableA.
REPEAT PRESELECT EACH bfSource WHERE bfSource.user_id = 0 NO-LOCK:
FIND NEXT bfSource.
DO FOR bfTarget TRANSACTION:
CREATE bfTarget.
BUFFER-COPY bfSource EXCEPT id TO bfTarget.
ASSIGN
bfTarget.user_id = 1.
END.
END.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。