【发布时间】:2013-03-14 07:36:04
【问题描述】:
我需要按指定顺序应用更新 (ClientDataSet.ApplyUpdates): - 删除为第一 - 修改为第二个 - 作为第三个插入
它们按照完成的顺序应用。
【问题讨论】:
-
AFAIK 无法处理这个问题,我不知道这是什么原因
-
我使用缓存更新。您可能在数据库中有一些约束(例如,记录或唯一索引的有效性重叠),如果用户插入记录,而不是编辑或删除另一条记录,则最终结果集可能是正确的,但不能应用。例如:我有一个唯一的 KEY=1,VAL=A 的数据库记录。我插入一条 KEY=1 且值 VAL=B 的记录,并删除 KEY=1、VAL=A 的记录。这按默认顺序失败,但按 DELETE、MODIFY、INSERT 顺序成功。
-
是的,这将失败,因为您以错误的顺序执行此操作,这会导致错误的数据(有 2 行具有相同的主键) - 可能只是一秒钟,但错误是错误的,不不管多久
-
是的,我知道。但是数据是由用户修改的——这就是为什么我需要重新排序操作来删除、修改、插入来解决它。
-
我很确定所有数据操作都由您的应用程序控制。因此,由您决定抛出异常或简单更新记录而不是追加/删除
标签: delphi tclientdataset