日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle设置每列字符数,如何修改一个数字字段

發布時間:2023/12/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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设置每列字符数,如何修改一个数字字段的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。