回 帖 发 新 帖 刷新版面

主题:你们的程序都使用“事务”吗?

如题

回复列表 (共3个回复)

沙发


应该在应用程序中,使用事务处理,
因为这样可以,
将整段代码放置到受保护、可恢复的事务单元中
提供对记录和表缓冲的保护。

但是,你必须要熟悉掌握和运用好,事务处理的过程。

板凳

一段事务处理的程序

    select BQRK
    if flock()
        m.errorHD = 0
        On error m.errorHD=Error()
        Begin transaction                && 开始进行事务处理
        Calculate Max(BQRK.voucher_no) to m.max_id for ContractID = m.nCID
        Insert into BQRK (ContractID,voucher_no,occurdate,furnaceid,bundle,amount,weight,Made_by,Team_Shift) values ;
                (m.nCID,m.max_id+1,m.dDate,m.c_Furnaceid,m.n_Bundle,m.n_Amount,m.n_weight,m.c_Made_by,m.cTeamCode)
        *****************************
        sum weight,bundle,amount to m.nLJSL_rk,m.nLJBS_rk,m.nLJZS_rk for ContractID=m.nCID    && 统计累计入库量
        sum weight,bundle,amount to m.nBQSL_rk,m.nBQBS_rk,m.nBQZS_rk for ContractID=m.nCID and !Flag_JZ    && 统计当期入库包数、支数
        
        Select BQTL
        sum weight,bundle,amount to m.nLJSL_tl,m.nLJBS_tl,m.nLJZS_tl for ContractID=m.nCID    && 统计累计投料量
        sum weight,bundle,amount to m.nBQSL_tl,m.nBQBS_tl,m.nBQZS_tl for ContractID=m.nCID and !Flag_JZ    && 统计当期投料包数、支数
        *****************************
        Update Cards set BQRK=m.nBQSL_rk , REMARKS=m.c_Remarks where ContractID=m.nCID        && 更新数据库

        if m.errorHD <> 0    && 如发生错误
            rollback        && 撤消数据操作
        endif
        end transaction            && 事务处理结束
        unlock
        on error
    else
        messagebox("数据库正在被其他用户使用,请您稍后再提交任务!" , 48 , "系统提示")
    endif

3 楼


这好像只用于VFP数据库,谁有后台数据是SQL-SERVER的事务处理经验?请不吝指教!

我来回复

您尚未登录,请登录后再回复。点此登录或注册