错误的嵌套数据集在ApplyUpdates上插入顺序

时间:2012-11-14 11:36:11

标签: delphi foreign-keys nested datasnap tclientdataset

我有4个ClientDataSets:

---详情1

---详情2

------ SubDetail 2.1 - 这里有一个FK to Detail 1

数据集上记录的插入顺序为:Master,Detail 1,Detail 2,SubDetail 2.1。

但是,当我调用ApplyUpdates时,数据库上的插入顺序是Master,Detail 2,SubDetail 2.1,Detail 1。

所以我得到一个错误“外键引用目标不存在”,因为SubDetail 2.1上有一个FK,它指向Detail 1上的记录,该记录尚未插入数据库。

我可以更改数据库中嵌套数据集的发布顺序吗?或者有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以在数据集上使用以下内容

procedure TTemplate.MasterpostBeforeInsert(DataSet: TDataSet);
begin
  if Assigned(Dataset.DataSource) and Assigned(Dataset.DataSource.DataSet) then
    if Dataset.DataSource.DataSet.State in [dsInsert] then 
      Dataset.DataSource.DataSet.Post;
end;