亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4510 | 回復: 13
打印 上一主題 下一主題

求教:一個RPGLE 事務處理的問題 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-01-02 03:55 |只看該作者 |倒序瀏覽
本人為初級入門者,最近用rpgle寫了有事務處理的程序。發(fā)現(xiàn)了一個重要問題

[本地環(huán)境]:OS/400 V5R2M0

[問題描述] :
交待一下,我處理事務的做法大致如下
1. CRTJRNRCV,CRTJRN......

2. STRJRNPF

3. STRCMTCTL

4. CALL XXXXX (RPGLE)

5.ENDCMTCTL


其中1和2不用寫進程序 ,3,4,5寫在一個CLP里,4是調(diào)用一個rpgle程序,里面有相應的commit,rollback處理 。

現(xiàn)在我發(fā)現(xiàn)的問題是:


在我更新或新增完一筆記錄,但沒有任何COMMIT和ROLLBACK的操作時,該筆記錄在數(shù)據(jù)庫里是可見的。即使不同的用戶新建SESSION也能讀取到這筆記錄?梢酝ㄟ^strsql中看到,也可以通過RPG讀取到,這樣的話,極其可能導致數(shù)據(jù)錯誤。

一個例子,如果程序a在處理數(shù)據(jù),程序b正在統(tǒng)計數(shù)據(jù)。


可能程序b取得的數(shù)據(jù),在一段時間后被程序a的異常處理給rollback掉了。

(在ORACLE里面,系統(tǒng)默認是寫進BUFFER里,在提交事務前,別的用戶無法看到數(shù)據(jù)變化。直到執(zhí)行了COMMIT別的用戶才能看到數(shù)據(jù)的變化)

我想400應該有解決這種問題的方法吧,請老師指點迷津!

論壇徽章:
0
2 [報告]
發(fā)表于 2005-01-04 13:50 |只看該作者

求教:一個RPGLE 事務處理的問題

哪位好心人給回復一下吧,謝謝!

論壇徽章:
0
3 [報告]
發(fā)表于 2005-01-04 14:20 |只看該作者

求教:一個RPGLE 事務處理的問題

俺不太懂,拋磚引玉一下

在我更新或新增完一筆記錄,但沒有任何COMMIT和ROLLBACK的操作時,該筆記錄在數(shù)據(jù)庫里是可見的。即使不同的用戶新建SESSION也能讀取到這筆記錄?梢酝ㄟ^strsql中看到,也可以通過RPG讀取到,這樣的話,極其可能導致數(shù)據(jù)錯誤。

400有記錄鎖的,應該不會出現(xiàn)這種問題。

論壇徽章:
0
4 [報告]
發(fā)表于 2005-01-04 21:17 |只看該作者

求教:一個RPGLE 事務處理的問題

標題不宜寫請教誰,既然是BBS嘛,需要的是大家的群策群力,不是個人能夠獨撐一面的,所以我把標題改了,不介意吧。海

關(guān)于事務處理,企業(yè)里用得不多,所以我也沒有這方面的經(jīng)驗,銀行的朋友用得會更多些。

關(guān)注中。。。

希望有相關(guān)經(jīng)驗的朋友出來指點。

論壇徽章:
0
5 [報告]
發(fā)表于 2005-01-18 15:05 |只看該作者

求教:一個RPGLE 事務處理的問題

我也還不是很清楚。但。我們曾經(jīng)用過這樣,測試是沒有問題的啊。

你在RPG中有UPDATE 或Write的Table 的F卡聲明時,是否有加Commit?只能是建議看看。SORRY!

論壇徽章:
0
6 [報告]
發(fā)表于 2005-01-19 09:27 |只看該作者

求教:一個RPGLE 事務處理的問題

所以說統(tǒng)計程序要加在事務處理程序的后面啊,等我測試一下先

論壇徽章:
0
7 [報告]
發(fā)表于 2005-01-19 09:27 |只看該作者

求教:一個RPGLE 事務處理的問題

樓主說的不會出現(xiàn),你的A程序在進行操作的時候400,會把表鎖起來,像CHAIN,UPDATE等,這個時候是不會讓其他程序?qū)Ρ磉M行修改的。如果你A程序出錯,ROLBAK,也是對A程序進行操作的恢復。只有當A程序運行完了把表釋放了以后,你的B程序才能進行統(tǒng)計。
還有提一下,如果大家在寫的時候,如果用了2次CHAIN 會鎖表,我一直沒有搞清楚什么原因。誰知道!就是CHAIN-CHAIN 就鎖還有。CHAIN-UPDATE-CHAIN 如果是同一條記錄也鎖!郁悶死了

論壇徽章:
0
8 [報告]
發(fā)表于 2005-01-19 11:00 |只看該作者

求教:一個RPGLE 事務處理的問題

關(guān)于鎖表的實際測試:

1        程序調(diào)用:如果A程序調(diào)用B程序,而且A、B程序都用U的方式打開同一個文件,更改同一條記錄時,那么在調(diào)用B程序之前,需要有一個UPDATE或者CLOSE的動作,否則在被調(diào)用的B程序?qū)i表。

2        程序之間:A程序定義了COMMIT,在UPDATE賦值語句后,UPDATE操作之前,其它程序查找該條記錄,仍然是原始的數(shù)據(jù);在UPDATE操作之前,事件處理語句之后,其它程序查找該條記錄,則是更改后的數(shù)據(jù)了,如果之后再ROLLBACK操作,的確有可能出現(xiàn)錯誤,所以說統(tǒng)計程序要在事務處理語句之后進行。

3        程序內(nèi)部:單個程序內(nèi),無論有無定義COMMIT,只要做了UPDATE的操作,都可以多次對同一條記錄進行CHAIN的;只要沒做UPDATE操作,下一次做CHAIN時,就會鎖表。樓上說的情況,沒有在測試中出現(xiàn)(即chain -update -chain仍然鎖表)。如仍有問題,可先查詢一下系統(tǒng)配置,或者是再看看源碼

論壇徽章:
0
9 [報告]
發(fā)表于 2005-01-19 11:04 |只看該作者

求教:一個RPGLE 事務處理的問題

補充:如果程序是用I(即只讀)的方式打開文件,是不會鎖表;同時,即使某條記錄被其它鎖,該程序仍然能夠讀到這條記錄,至于讀到的數(shù)據(jù),參見上面第2條。

還有,第2條寫錯了,應該是“在UPDATE操作之后,事務處理語句之前”。

論壇徽章:
0
10 [報告]
發(fā)表于 2005-01-19 12:52 |只看該作者

求教:一個RPGLE 事務處理的問題

要看看你的程序是怎么寫的?在程序的F表定義中,如果你打開的文件沒有加上關(guān)鍵字COMMIT的話,此文件是不會進入事物處理的控制中的,馬上修改馬上更新。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP