oracle设置每列字符数,如何修改一个数字字段
怎么修改一個數字字段
當做一個網上選課系統的時候?這是一個選課表?當然還有學生?課程表?等等
我的問題是
如何修改一個數字字段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
總結
以上是生活随笔為你收集整理的oracle设置每列字符数,如何修改一个数字字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米8摔了一下有事吗(小米官方售后服务)
- 下一篇: 美丽说与蘑菇街有什么区别