同学问我,我不懂oracle,故发贴求之。
数据库中有一个表为班级信息总览
字段如下 banjibh number –班级编号
banjimc varchar2(36) –班级名称
banjirs number -- 班级人数
编写触发器,实现在班级信息表中插入/删除一条记录时,更新 班级信息总览 表的 班级人数,没有则插入,有则更新,当班级信息表中删除一条,将该班级的人数减1。
数据库中有一个表为班级信息总览
字段如下 banjibh number –班级编号
banjimc varchar2(36) –班级名称
banjirs number -- 班级人数
编写触发器,实现在班级信息表中插入/删除一条记录时,更新 班级信息总览 表的 班级人数,没有则插入,有则更新,当班级信息表中删除一条,将该班级的人数减1。
after insert or delete
on classinformation
for each row
declare
v_cnt number := 0;
begin
select nvl(count(1)) into v_cnt from classinfoAll where banjimc = NEW.banjimc;
if inserting then
if v_cnt = 0 then
insert into classinfoAll(banjibh,banjimc,banjirs)
values(NEW.banjibh,NEW.banjimc,1);
else
update classinfoAll set banjirs = banjirs +1 where banjimc = NEW.banjimc;
end if;
elsif deleting then
update classinfoAll set banjirs = banjirs +1 where banjimc = NEW.banjimc;
end if;
end test;大致如此,没有测试