我是靠谱客的博主 寒冷画笔,最近开发中收集的这篇文章主要介绍Oracle触发器实验十-创建一个insert触发器,当在sc表中插入一条新记录时,sno和cno必须是已经存在的学号和课程号,且grade应该在0----100之间。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

看代码前先了解一下思路,这样看的更明白。

由题目分析:

我们把

sno和cno都存在当作A,其他情况当作a;

grade在0-100之间当作B,不在这个区间当作b;

通过排列组合有四种结果,分别为AB,Ab,aB,ab。

其中只有AB触发触发器后不会报错,其他三种组合都会报错。

注意!  这里我们定义俩个变量,通过控制d,b的值来控制可能出现的排列组合类型。

代码如下:

create or replace trigger tryc6
before insert on sc
for each row
declare
d number;
b number;
begin
d:=1;
b:=0;
if d=1 then
for m in (select sno,cno from stu,course) loop 
if :new.sno = m.sno or :new.sno = m.cno then b:=1;
  if :new.grade < 0 or :new.grade > 100 then            
    raise_application_error(-20003,'成绩超出取值范围');
    end if;  
elsif  :new.grade < 0 or :new.grade >100 then  d:=2;
else   d:=3;
end if;
end loop;
end if;
if d=3 and b!=1 then
    raise_application_error(-20002,'学号或课程号不存在');
   end if;
if d=2 and b!=1 then
    raise_application_error(-20001,'学号或课程号不存在且成绩超出范围');
   end if;
end tryc6;

结果如下:

最后

以上就是寒冷画笔为你收集整理的Oracle触发器实验十-创建一个insert触发器,当在sc表中插入一条新记录时,sno和cno必须是已经存在的学号和课程号,且grade应该在0----100之间。的全部内容,希望文章能够帮你解决Oracle触发器实验十-创建一个insert触发器,当在sc表中插入一条新记录时,sno和cno必须是已经存在的学号和课程号,且grade应该在0----100之间。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部