Una tercera vía es utilizar semáforos
o un campo que indique que no se desea calcular el stock.
Por ejemplo:
Código:
insert into cabecera_pedido(...) values(...);
insert into detalle_pedido(id_cabecera, articulo, unidades, ..., calcular_stock)
values(: id, : articulo, : unidades, ..., 0);
Y en los triggers o procedimientos que tocan el stock
Código SQL
[-]
create trigger detalle_pedido_bi0 before insert
declare variable calcular_stock smallint;
begin
-- Calculo stock si se desea
if (new.calcular_stock = 1) then
begin
update stock ...
end
-- Fuerzo CALCULAR_STOCK por si en el futuro se retoca este registro
new.calular_stock = 1;
end