要求编写一个触发器,每个学生选课不超过五门
如下
Create or replace trigger enrol_inser
Before insert on enrolment
For each row
Declare
asid varchar(20);
Begin
select sid
into asid
From enrolment
Group by sid,xueqi
Having count(cno)>=5;
If :new.sid=asid then
Raise_application_error(-20091122,’选课已经达到最高上限五门’);
End if;
End;
/
触发器创建成功,但是不能在选课表里插数据了,插入就报错:SQL> Insert
2 Into enrolment(sid,cno,grade,xueqi)
3 Values('001','06','49','上');
Into enrolment(sid,cno,grade,xueqi)
*
第 2 行出现错误:
ORA-01403: 未找到数据
ORA-06512: 在 "SCOTT.ENROL_INSER", line 4
ORA-04088: 触发器 'SCOTT.ENROL_INSER' 执行过程中出错
马上要交作业了,哪位高人救救我呀~~~万分感激~~~~(没那么多积分,就可怜可怜我吧~~~~)
如下
Create or replace trigger enrol_inser
Before insert on enrolment
For each row
Declare
asid varchar(20);
Begin
select sid
into asid
From enrolment
Group by sid,xueqi
Having count(cno)>=5;
If :new.sid=asid then
Raise_application_error(-20091122,’选课已经达到最高上限五门’);
End if;
End;
/
触发器创建成功,但是不能在选课表里插数据了,插入就报错:SQL> Insert
2 Into enrolment(sid,cno,grade,xueqi)
3 Values('001','06','49','上');
Into enrolment(sid,cno,grade,xueqi)
*
第 2 行出现错误:
ORA-01403: 未找到数据
ORA-06512: 在 "SCOTT.ENROL_INSER", line 4
ORA-04088: 触发器 'SCOTT.ENROL_INSER' 执行过程中出错
马上要交作业了,哪位高人救救我呀~~~万分感激~~~~(没那么多积分,就可怜可怜我吧~~~~)
If :new.sid=asid then
Raise_application_error(-20001,’选课已经达到最高上限五门’);
End if;
exception when no_data_found then
null;
End;
/