1

我手动创建了一些数据适配器——由于版本不兼容,使用自动生成的适配器是不可行的,因为数据集由许多表组成,通常混合有 PK、FK 约束。到目前为止,它的大部分工作都非常顺利,但是在使用新的“添加”行更新数据库时修改适配器以使用 PK 的数据库序列(而不是分配给数据集中行的临时序列)后,我一直打击问题。

我将序列添加到插入语句中,并将 PK 参数更改为输出参数,以便它更新数据集行,从而更新所有子行(使用 UPDATE CASCADE 规则)。问题是子行,在更新具有添加的行状态之前,被更改为修改状态(我不同意这甚至应该发生,即使添加的行肯定应该保持添加状态修改的!)。因此,当我们使用子行更新子表时,它会失败,因为它的预期行具有添加的状态。

我可以解决这个问题的最干净的方法是什么?我能想到的潜在解决方案:

  • 关闭 UPDATE CASCADE 并在修改后手动更新每个子行,更新父 PK 并将每行更改回添加后。
  • 在开始更新之前在数据集的所有表中创建所有添加行的副本,然后在每个表更新后更新主副本,将所有正确的行标记回添加。

有更好的想法吗?

4

0 回答 0