1617
社区成员
create or replace trigger Member_COUNT
after insert or update or delete on B
for each row
begin
if inserting then
--如果是插入
update A set Member_CNT=Member_CNT + 1 where Group_ID=:new.Group_ID;
elsif updating then
--如果是更新
update A set Member_CNT=Member_CNT + 1 where Group_ID=:new.Group_ID;
update A set Member_CNT=Member_CNT - 1 where Group_ID=:old.Group_ID;
elsif deleting then
--如果是删除
update A set Member_CNT=Member_CNT - 1 where Group_ID=:old.Group_ID;
end if;
end Member_COUNT;
create or replace trigger t_a_b
after insert or update or delete on B
for each row
declare
flag number;
begin
select count(*) into flag from A where group_id=:new.group_id;
if flag=0 then
insert into A values(:new.group_id,1);
else
update A a set a.member_cnt=a.member_cnt-1
where a.group_id=:old.group_id;
updata A a set a.member_cnt=a.menber_cnt+1
where a.group_id=:new.group_id;
end if;
commit;
end;
update A a set a.member_cnt=(select count(*) from B where group_id=:old.group_id)
where a.group_id=:old.group_id;
updata A a set a.member_cnt=( select count(*) from B where group_id=:new.group_id)
where a.group_id=:new.group_id;