- 论坛徽章:
- 0
|
能否在表的触发器中当一记录变化修改另一记录
我也试过用表层触发器,但表层是不能用:new或ld的阿,就是说我没办法找到当前修改的行,那么我只好写成如下:
Create Or Replace Trigger U_Equipment_Essence_After_Trg
after update
on u_equipment_essence
declare
cursor main_equipment is
select u_equipment_essence_id from u_equipment_essence
where u_assembtype ='M';
begin
for p1 in main_equipment loop
update u_equipment_essence es set
es.equipment_original_value = (select sum(equipment_original_value) from u_equipment_essence where u_main_equipment_essence_id =es.u_equipment_essence_id and u_assembtype='P'),
es.month_depreciation_value = (select sum(month_depreciation_value) from u_equipment_essence where u_main_equipment_essence_id =es.u_equipment_essence_id and u_assembtype='P'),
es.year_depreciation_value = (select sum(year_depreciation_value) from u_equipment_essence where u_main_equipment_essence_id =es.u_equipment_essence_id and u_assembtype='P'),
es.u_ljzj = (select sum(u_ljzj) from u_equipment_essence where u_main_equipment_essence_id =es.u_equipment_essence_id and u_assembtype='P')
where es.u_equipment_essence_id =p1.u_equipment_essence_id;
end loop;
end U_Equipment_Essence_After_Trg;
这样,运行时报错如下:ORA-00036: 超过递归 SQL (50) 级的最大值
ORA-06512: 在"CQSBGL.U_EQUIPMENT_ESSENCE_AFTER_TRG" |
|