上面的trigger 错了,重发:
create or replace trigger tr_af_DEVMODULE1
before insert or update or delete on DEVMODULE
for each row
declare
v_count integer;
v_kind char(10);
v_volume number;
v_oldvolume number;
v_edmodel number;
v_sjmodel number;
v_jijiaid char(18);
v_shebeiid char(18);
v_sysid char(18);
begin
if inserting then
select MODUTYPENAME into v_kind from MODUTYPE where MODUTYPEID=:new.MODUTYPEID;
else
select MODUTYPENAME into v_kind from MODUTYPE where MODUTYPEID=:old.MODUTYPEID;
end if;
if (v_kind = '整流模块') then
if deleting then
v_jijiaid:=:old.PARENTID;
v_oldvolume:=:old.VOLUME;
select PARENTID into v_shebeiid from DEVRESOUSE where EEID=v_jijiaid;
select PARENTID into v_sysid from DEVICECOM where DEVID=v_shebeiid;
select CONVOLUME into v_sjmodel from SYSDC where SYSID=v_sysid;
if (v_sjmodel > v_oldvolume) then
v_sjmodel := v_sjmodel - v_oldvolume;
else
v_sjmodel := 0;
end if;
update SYSDC set CONVOLUME = v_sjmodel where SYSID=v_sysid;
select count(*) into v_count from DEVMODULE where PARENTID=v_jijiaid;
if (v_count = 1) then
update SYSDC set OUTVOLUME = 0 where SYSID=v_sysid;
update DEVICECOM set VOLUME = 0 where DEVID=v_shebeiid;
end if;
else
if inserting then
v_jijiaid:=:new.PARENTID;
v_volume:=:new.VOLUME;
select CONFNUMBER into v_edmodel from DEVRESOUSE where EEID=v_jijiaid;
select PARENTID into v_shebeiid from DEVRESOUSE where EEID=v_jijiaid;
select PARENTID into v_sysid from DEVICECOM where DEVID=v_shebeiid;
select CONVOLUME into v_sjmodel from SYSDC where SYSID=v_sysid;
v_sjmodel := v_sjmodel + v_volume;
update SYSDC set CONVOLUME = v_sjmodel,OUTVOLUME = v_edmodel * v_volume where SYSID=v_sysid;
update DEVICECOM set VOLUME = v_edmodel * v_volume where DEVID=v_shebeiid;
else
v_jijiaid:=:old.PARENTID;
v_volume:=:new.VOLUME;
v_oldvolume:=:old.VOLUME;
select CONFNUMBER into v_edmodel from DEVRESOUSE where EEID=v_jijiaid;
select PARENTID into v_shebeiid from DEVRESOUSE where EEID=v_jijiaid;
select PARENTID into v_sysid from DEVICECOM where DEVID=v_shebeiid;
select CONVOLUME into v_sjmodel from SYSDC where SYSID=v_sysid;
v_sjmodel := v_sjmodel + v_volume - v_oldvolume;
if (v_sjmodel < 0) then
v_sjmodel := 0;
end if;
update SYSDC set CONVOLUME = v_sjmodel,OUTVOLUME = v_edmodel * v_volume where SYSID=v_sysid;
end if;
end if;
end if;
end  tr_af_DEVMODULE1;