在ASP程序中實現(xiàn)數(shù)據(jù)庫事務(wù)控制

字號:

在編程中,經(jīng)常需要使用事務(wù)。所謂事務(wù),就是一系列必須都成功的操作,只要有一步操作失敗,所有其他的步驟也必須撤銷。比如用ASP開發(fā)一個網(wǎng)絡(luò)硬盤系統(tǒng),其用戶注冊部分要做的事有:
    將用戶信息記入數(shù)據(jù)庫
    為用戶開個文件夾用于存儲
    初始化用戶操作日志
    這三步必須使用事務(wù),否則萬一磁盤操作失敗,而沒有撤銷數(shù)據(jù)庫操作,就會造成只能登陸而不能操作的“死用戶”現(xiàn)象。
    由于數(shù)據(jù)庫系統(tǒng)特殊的發(fā)展歷史,小至Access,大到DB2,無不帶有事務(wù)支持。因此上述步驟可以如下表示:
    On Error Resume Next
    第一步:
    在事務(wù)環(huán)境下把用戶信息記入數(shù)據(jù)庫
    If Err Then
    關(guān)閉連接
    退出
    Else
    第二步:創(chuàng)建文件夾
    If Err Then
    回滾第一步數(shù)據(jù)庫操作,退出
    Else
    第三步:在事務(wù)環(huán)境下操作日志數(shù)據(jù)庫
    If Err Then
    回滾第一步操作,刪除第二步建立的文件夾
    退出
    End If
    End If
    End If
    提交第一步數(shù)據(jù)庫操作的事務(wù)
    提交第二步數(shù)據(jù)庫操作的事務(wù)
    End
    每一步都需要進行判斷,如果失敗,還需要手工回滾前面多步操作,使程序變得復(fù)雜、難懂。如果今后更新了程序,增加其他步驟,還需要嵌套更多層的If...Else...End If,使程序流程更加復(fù)雜。