У меня есть основная деталь
CachedUpdates
для мастера true
CachedUpdates
для детали true
DetailCascde
для детали true
Мастер имеет дело с одной записью:
select * from orders where order_id=:order
Сначала я передаю -1 в качестве фиктивного параметра, чтобы получить пустую основную запись:
orders.Close;
orders.Params[0].AsInteger := -1;
orders.Open;
Чем я заполняю идентификатор заказа с помощью -1, чтобы построить отношения между мастером и деталью:
orders.Append;
orders.Fields[0].AsInteger := -1;
orders.Post;
Я успешно вставляю в детали с Append
и Post
Проблема в базе данных Firebird, которую я имеюэта строка включена перед триггером вставки для мастера
new.order_id = coalesce((select max(order_id) from orders) + 1, 1);
I ApplyUpdates
Orders.ApplyUpdates(-1);
dOrder.ApplyUpdates(-1);
Поэтому, когда я применяю ApplyUpdates для мастера, детали не будут применяться, потому что идентификатор мастера изменяетсясервер.
Как решить такой сценарий?