Firedac Firebird主从方案

时间:2019-03-03 09:42:50

标签: delphi firebird master-detail firedac

我掌握了主要细节

CachedUpdates为主true
CachedUpdates详细了解true
DetailCascde详细了解true

主人处理一项记录:

select * from orders where order_id=:order 

首先,我将-1作为伪参数传递以获得空的主记录:

orders.Close;
orders.Params[0].AsInteger := -1;
orders.Open;

比起我用-1填充订单ID来建立母版和明细之间的关系:

orders.Append;
orders.Fields[0].AsInteger := -1;
orders.Post;

我成功插入了AppendPost

问题出在Firebird数据库中,在为主服务器插入触发器之前,我在这行代码上

new.order_id = coalesce((select max(order_id) from orders) + 1, 1);

我ApplyUpdates

Orders.ApplyUpdates(-1);
dOrder.ApplyUpdates(-1);

因此,当我对主服务器应用更新时,由于服务器更改了主服务器ID,因此该详细信息将不适用。

如何解决这种情况?

0 个答案:

没有答案