怎么修改一个数字字段

当做一个网上选课系统的时候 这是一个选课表 当然还有学生 课程表 等等
我的问题是
如何修改一个数字字段addstu,当有新数据插入带有这个字段的表fin course 当中 的时候 ,这个字段就加1 从而达到控制这门课程的人数限制比如30个人 之内
这是需要写一个 过程游标,还是写一个函数 还是什么 现在没有思绪
这是整个er图
[解决办法]
建一个触发器就可以了,刚写了一个测试用的,给你参考。
SQL> CREATE TABLE idletest(ID NUMBER);
Table created
SQL> CREATE OR REPLACE TRIGGER idletesttrigger BEFORE INSERT ON idletest
2 DECLARE v NUMBER;
3 BEGIN
4 SELECT COUNT(ID) INTO v FROM idletest;
5 IF v >= 3 THEN
6 RAISE_APPLICATION_ERROR(-20001, 'max is 3');
7 END IF;
8 END;
9 /
Trigger created
SQL>
SQL> INSERT INTO idletest VALUES(1);
1 row inserted
SQL> INSERT INTO idletest VALUES(2);
1 row inserted
SQL> INSERT INTO idletest VALUES(3);
1 row inserted
SQL> INSERT INTO idletest VALUES(4);
INSERT INTO idletest VALUES(4)
ORA-20001: max is 3
ORA-06512: 在 "RCOTRPR1.IDLETESTTRIGGER", line 5
ORA-04088: 触发器 'RCOTRPR1.IDLETESTTRIGGER' 执行过程中出错
SQL>
[解决办法]
create or replace function fun_st_course(crno in number, stno in number,stno in number) return integer is
PRAGMA AUTONOMOUS_TRANSACTION;
Result integer;
v_mx number;
v_cur number;
begin
select maxnum,course_curnum into v_mx,v_cur from tb_course where CourseNo=crno;
if v_mx>=v_cur+1 then
insert into tb_fin_course(CourseNo,StudentNo,TeacherNo) values (crno,stno,stno);
update tb_course set course_curnum=course_curnum+1 where CourseNo=crno;
commit;
Result:=1;
return(Result);
else
Result:=0;
return(Result);
end if;
end fun_st_course;
SQL> exec :abc:=fun_st_course(1234,002,300);
PL/SQL procedure successfully completed
abc
---------
1