julyclyde(原作)
作者系2月份微軟社區(qū)之星microsoft china community star
在編程中,經(jīng)常需要使用事務(wù)。所謂事務(wù),就是一系列必須都成功的操作,只要有一步操作失敗,所有其他的步驟也必須撤銷。比如用asp開(kāi)發(fā)一個(gè)網(wǎng)絡(luò)硬盤系統(tǒng),其用戶注冊(cè)部分要做的事有:
將用戶信息記入數(shù)據(jù)庫(kù)
為用戶開(kāi)個(gè)文件夾用于存儲(chǔ)
初始化用戶操作日志
這三步必須使用事務(wù),否則萬(wàn)一磁盤操作失敗,而沒(méi)有撤銷數(shù)據(jù)庫(kù)操作,就會(huì)造成只能登陸而不能操作的“死用戶”現(xiàn)象。
由于數(shù)據(jù)庫(kù)系統(tǒng)特殊的發(fā)展歷史,小至access,大到db2,無(wú)不帶有事務(wù)支持。因此上述步驟可以如下表示:
on error resume next
第一步:
在事務(wù)環(huán)境下把用戶信息記入數(shù)據(jù)庫(kù)
if err then
關(guān)閉連接
退出
else
第二步:創(chuàng)建文件夾
if err then
回滾第一步數(shù)據(jù)庫(kù)操作,退出
else
第三步:在事務(wù)環(huán)境下操作日志數(shù)據(jù)庫(kù)
if err then
回滾第一步操作,刪除第二步建立的文件夾
退出
end if
end if
end if
提交第一步數(shù)據(jù)庫(kù)操作的事務(wù)
提交第二步數(shù)據(jù)庫(kù)操作的事務(wù)
end
每一步都需要進(jìn)行判斷,如果失敗,還需要手工回滾前面多步操作,使程序變得復(fù)雜、難懂。如果今后更新了程序,增加其他步驟,還需要嵌套
更多信息請(qǐng)查看IT技術(shù)專欄