create or replace trigger transmit_XS_ZATD_trigger_each
after delete on XS_ZATD
declare
zatdbmc varchar(64);
zatdnum number;
v_ajbh xs_zatd.ajbh%type;
cursor zatd(cajbh varchar) is
select zatdbm from xs_zatd
where ajbh = cajbh
order by zatdbm;
begin
v_ajbh := zatdData.v_ajbh(0);
if deleting then
select count(*) into zatdnum from xs_zatd where ajbh = v_ajbh;
if zatdnum > 0 then
for zatdbm in zatd(v_ajbh) loop
zatdbmc := zatdbmc||'/'||zatdbm.zatdbm;
end loop;
zatdbmc := zatdbmc||'/';
update xzlc.xzlc_ajxx set lc_zatd = zatdbmc where lc_ajbh = v_ajbh;
end if;
if zatdnum = 0 then
update xzlc.xzlc_ajxx set lc_zatd = null where lc_ajbh = v_ajbh;
end if;
end if;
end transmit_XS_ZATD_trigger;以上是我写的一个触发器。v_ajbh是通过包得到的公共变量。我想在本表删除操作后,先判断本表是否还有记录,如果有,就通过游标取出后按照一定的规则组合数据update另一个用户的表的记录,如果没有了,就update相应的字段为null。但是现在有个问题,如果删除部分数据一切正常,但全部删除后,对方用户的字段总是剩下最后一条数据,不知是为什么?请各位大虾帮忙看看。
after delete on XS_ZATD
declare
zatdbmc varchar(64);
zatdnum number;
v_ajbh xs_zatd.ajbh%type;
cursor zatd(cajbh varchar) is
select zatdbm from xs_zatd
where ajbh = cajbh
order by zatdbm;
begin
v_ajbh := zatdData.v_ajbh(0);
if deleting then
select count(*) into zatdnum from xs_zatd where ajbh = v_ajbh;
if zatdnum > 0 then
for zatdbm in zatd(v_ajbh) loop
zatdbmc := zatdbmc||'/'||zatdbm.zatdbm;
end loop;
zatdbmc := zatdbmc||'/';
update xzlc.xzlc_ajxx set lc_zatd = zatdbmc where lc_ajbh = v_ajbh;
end if;
if zatdnum = 0 then
update xzlc.xzlc_ajxx set lc_zatd = null where lc_ajbh = v_ajbh;
end if;
end if;
end transmit_XS_ZATD_trigger;以上是我写的一个触发器。v_ajbh是通过包得到的公共变量。我想在本表删除操作后,先判断本表是否还有记录,如果有,就通过游标取出后按照一定的规则组合数据update另一个用户的表的记录,如果没有了,就update相应的字段为null。但是现在有个问题,如果删除部分数据一切正常,但全部删除后,对方用户的字段总是剩下最后一条数据,不知是为什么?请各位大虾帮忙看看。
谢谢了。