微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将一些表记录复制到同一张表中会出现一些问题

如何解决将一些表记录复制到同一张表中会出现一些问题

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 举报,一经查实,本站将立刻删除。