我有两张桌子,主人和细节。在插入新的主记录后,使用触发器自动创建详细信息表记录。
但我需要为主表创建Before Insert or Update
触发器(称之为T1
),以根据主记录中的字段和其详细记录中的总和进行一些计算。
我的问题是能够在T1
中进行计算我需要先插入详细信息记录,但当然详细记录对主表ID有外键约束,这会阻止此操作,所以您认为实现这一任务的最佳方法?
答案 0 :(得分:2)
我认为最好的方法是使用一个完成所有工作的存储过程...... 像这样的东西:
create procedure insert_record(id integer, ...);
as
begin
/* this inserts master and through triggers creates detail */
insert into master (id, ... )
values (:id, ...);
/* calculate values */
select sum(...) from detail
where id = :id
into :calculation;
/* usa calculated value to update master table */
update master
set calculated_value = :calculation
here id = :id;
end