sql建立触发器

(1)befInsEI_t : 在插入新的指标前检查总权重加上新指标权重是否超过1,如果没有则输出总权重;如果超过了则输出“总权重超过1”
(2)aftInsERes_t : 在插入新的统计结果到EvalResult表后,删除该位老师在EvalRecord表里的所有评分记录
(3)insevalStu_v : instead of 触发器,将对evalStu_v视图的数据插入转换成对基表Student表的插入
最新回答
幽萌之羽

2024-11-03 08:37:25

(1)
create or replace trigger befInsEI_t
before insert on EvalIndex for each row
declare v_EIWeight float;
begin
 select sum(EIWeight)+:new.EIWeight into v_EIWeight
 from EvalIndex where EIID=:new.EIID;
 if v_EIWeight>1 then
  RAISE_APPLICATION_ERROR(-20001,'总权重超过1');
 else
  DBMS_OUTPUT.put_line('总权重为:'||v_EIWeight);
 end if;
end;
(2)
create or replace trigger aftInsERes_t 
after insert on EvalResult for each row
begin
delete from EvalRecord where EREvalued=:new.EResEvalued;
end;
(3)
create or replace trigger insevalStu_v instead of
insert on evalStu_v  for each row
insert into Student(sname,sphone)
values (:new.sname,:new.sphone);
end;