我们刚刚将我们的软件从 Delphi 2009升级到 Alexandria ,它在某些地方坏了,总是与嵌套的客户端数据集有关。
例如,我刚刚追踪了
未找到记录或记录已被其他用户更改
从删除尝试中接收。主数据集包含3个子数据集-我们称它们为A、B和C。客户端数据集B和C“指向”SQL服务器上的同一个物理表。
在Data.Win.ADODB
、TCustomADODataSet.PSExecute
中,我可以看到生成的delete语句带有各自的参数:
1.表A中的记录被删除,在DataSnap.Provider、TSQLResolver.DoExecSQL中,我看到RowsAffected <> 0
1.表B中的记录被删除,在DataSnap.Provider、TSQLResolver.DoExecSQL中,我看到RowsAffected <> 0
1.表C中的记录是否被删除?在DataSnap.Provider、TSQLResolver.DoExecSQL中,我看到RowsAffected为0,并且触发了“Recordnot found or changed by another user”异常。
我假设发生这种情况是因为3)表C试图删除刚刚为表B删除的同一条记录-因此无法找到该记录并发生异常。
我的问题是:除了重新连接包含所有这些表的大部分数据模块之外,是否有一种更简单/更好的方法来说“如果删除表C失败也没关系”,以便整个主表删除都通过?
1条答案
按热度按时间yshpjwxd1#
由于没有人提供建议,我咬紧牙关,将一个竞争的客户端数据集从嵌套改为独立-现在一切正常,就像我已经怀疑的那样。可惜我不得不走那条路,因为它给我留下了一个相当“不对称”的解决方案.