欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

如何修改一个数字字段

更新时间: 2014-01-05 02:13:52 责任编辑: Author_N1

 

怎么修改一个数字字段


当做一个网上选课系统的时候 这是一个选课表 当然还有学生 课程表 等等

我的问题是 
如何修改一个数字字段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> 

--参考方法--
引用:
Quote: 引用:

你这里addstu字段是不是应该放在tb_course表里;
同时这个表还订制一个maxnum字段记录30是最大数,
每插入一条对应课程学生关系记录到tb_fin_course,就同时更新tb_course.addstu加1,判断不超过maxnum=30的前提下,以上都可以在一个存储过程中实现

你说的 每次插入一条对应课程学生关系记录 到 fin-course表中 这个是什么 ,我没看懂,希望你把整个过程的详细代码截个图,我才开始初学,这不是都搞了一天了,老呆都晕了。还是没想出怎么用代码去实现

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
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:13:52
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7250/
本文WWW.DOC100.NET DOC100.NET版权所有。