sql-求助:网络中断时 ASP RollbackTrans事务回滚不完全

问题描述

求助:网络中断时 ASP RollbackTrans事务回滚不完全
当网络中断 没有完全运行所有代码时 member 表会回滚 但是 shenhe表不回滚

SQL数据库 已经出现了 shenhe表有记录 member没有对应的记录

 <%conn.BeginTrans    call checkPost()    psw=lostsql(trim(request.Form(""psw"")))    repsw=lostsql(trim(request.Form(""repsw"")))    answer=lostsql(trim(request.Form(""answer"")))    reanswer=lostsql(trim(request.Form(""reanswer"")))    tjuser=lostsql(trim(request.Form(""tjuser"")))    regcode=lostsql(trim(request.Form(""regcode"")))    if psw="""" or psw<>repsw then        call gotourl(""一级密码不一致!"""back"")    end if    if answer="""" or  answer<>reanswer then        call gotourl(""二级密码不一致!"""back"")    end if    if tjuser="""" then        call gotourl(""请填写 直推人帐号!"""back"")    end if    if tjuser<>"""" then        if (conn.execute(""select count(*) from [member] where [lock]=1 and iskt=1 and [user] = '""&tjuser&""'"")(0)<1) then            call gotourl(""直推人帐号 填写错误!"""back"")        end if    end if    if regcode="""" then        call gotourl(""请填写 注册码!"""back"")    end if    if regcode<>"""" then        if (conn.execute(""select count(*) from [regcode] where [regcode] = '""&regcode&""'"")(0)<1) then            call gotourl(""注册码 填写错误!"""back"")        end if    end if    set rs=server.CreateObject(""adodb.recordset"")    rs.open ""select * from member""conn13    rs.addnew    rs(""user"")=user    rs(""psw"")=md5(psw)    rs(""answer"")=md5(answer)    rs(""cman"")=lostsql(trim(request.Form(""cman"")))    rs(""tel"")=lostsql(trim(request.Form(""tel"")))    rs(""qq"")=lostsql(trim(request.Form(""qq"")))    rs(""times"")=now()    rs(""lock"")=1    rs.update    set rsi=server.CreateObject(""adodb.recordset"")    rsi.open ""select * from regcode where regcode='""&regcode&""'""conn13    rsi.delete    rsi.update    rsi.close    set rsi=nothing    pp_my=0    if tjuser<>"""" then        set rsm=server.CreateObject(""adodb.recordset"")        rsm.open ""select * from member where [user]='""&tjuser&""'""conn13        rs(""tjuser"")=tjuser        rs(""tjpath"")=rsm(""tjpath"")&rs(""id"")&""/""        rs(""pid"")=rsm(""id"")        pp_my=rsm(""pp_my"")        rsm.close    else        rs(""tjuser"")=""""        rs(""tjpath"")=""/""&rs(""id"")&""/""        rs(""pid"")=0    end if    rs.update    fuser=user    times=now()    rs.close    set rs=nothing    oldtime=dateadd(""s""-60*60*48now())    paynum=kt_num    paytj=0.5    ' 0-找不到匹配转公司 1-直推人 2-时间最早    if pp_my=1 then        '------------------------------------------------------------        '时间最早        set rsm=server.CreateObject(""adodb.recordset"")        rsm.open ""select top 1 * from member where [lock]=1 and iskt=1 and chajia>0 order by pp_yx desc  ktimes asc  id asc""conn13        if not rsm.eof then            if rsm(""chajia"")-paynum*(1-paytj)>=0 then                t_pay=paynum*(1-paytj)            else                t_pay=rsm(""chajia"")            end if            paynum=paynum-t_pay            rsm(""chajia"")=rsm(""chajia"")-t_pay            rsm(""pnum"")=rsm(""pnum"")+1            rsm.update            set rsi=server.CreateObject(""adodb.recordset"")            rsi.open ""select * from shenhe""conn13            rsi.addnew            rsi(""fuser"")=fuser            rsi(""num"")=t_pay            rsi(""lid"")=0            rsi(""tuser"")=rsm(""user"")            rsi(""times"")=times            rsi(""tid"")=2    '时间最早            rsi.update            rsi.close            set rsi=nothing        else            '没有匹配时 匹配到公司帐号            set rsg=server.CreateObject(""adodb.recordset"")            rsg.open ""select * from member where [user]='""&gs_user&""'""conn13                rsg(""chajia"")=rsg(""chajia"")-paynum*(1-paytj)                rsg(""pnum"")=rsg(""pnum"")+1                paynum=paynum*paytj                rsg.update                set rsi=server.CreateObject(""adodb.recordset"")                rsi.open ""select * from shenhe""conn13                rsi.addnew                rsi(""fuser"")=fuser                rsi(""num"")=paynum*(1-paytj)                rsi(""lid"")=0                rsi(""tuser"")=gs_user                rsi(""times"")=times                rsi(""tid"")=0    '找不到匹配转公司                rsi.update                rsi.close                set rsi=nothing            rsg.close            set rsg=nothing        end if        rsm.close        set rsm=nothing        '直推人        set rsg=server.CreateObject(""adodb.recordset"")        rsg.open ""select * from member where [user]='""&tjuser&""'""conn13            rsg(""chajia"")=rsg(""chajia"")-paynum            rsg(""pnum"")=rsg(""pnum"")+1            rsg.update            set rsi=server.CreateObject(""adodb.recordset"")            rsi.open ""select * from shenhe""conn13            rsi.addnew            rsi(""fuser"")=fuser            rsi(""num"")=paynum            rsi(""lid"")=0            rsi(""tuser"")=tjuser            rsi(""times"")=times            rsi(""tid"")=1    '直推人            rsi.update            rsi.close            set rsi=nothing        rsg.close        set rsg=nothing        '------------------------------------------------------------    else        '------------------------------------------------------------        '时间最早        set rsm=server.CreateObject(""adodb.recordset"")        rsm.open ""select top 2 * from member where [lock]=1 and iskt=1 and chajia>0 order by pp_yx desc  ktimes asc  id asc""conn13        if not rsm.eof then            rsm.movefirst            '第一个            if rsm(""chajia"")-paynum>=0 then                t_pay=paynum            else                t_pay=rsm(""chajia"")            end if            paynum=paynum-t_pay            rsm(""chajia"")=rsm(""chajia"")-t_pay            rsm(""pnum"")=rsm(""pnum"")+1            rsm.update            set rsi=server.CreateObject(""adodb.recordset"")            rsi.open ""select * from shenhe""conn13            rsi.addnew            rsi(""fuser"")=fuser            rsi(""num"")=t_pay            rsi(""lid"")=0            rsi(""tuser"")=rsm(""user"")            rsi(""times"")=times            rsi(""tid"")=2    '时间最早            rsi.update            rsi.close            set rsi=nothing            '匹配完第一个有剩余            if paynum>0 then            if rsm.recordcount=2 then            rsm.movenext                '第二个                if rsm(""chajia"")-paynum>=0 then                    rsm(""chajia"")=rsm(""chajia"")-paynum                    rsm(""pnum"")=rsm(""pnum"")+1                    rsm.update                    set rsi=server.CreateObject(""adodb.recordset"")                    rsi.open ""select * from shenhe""conn13                    rsi.addnew                    rsi(""fuser"")=fuser                    rsi(""num"")=paynum                    rsi(""lid"")=0                    rsi(""tuser"")=rsm(""user"")                    rsi(""times"")=times                    rsi(""tid"")=2    '时间最早                    rsi.update                    rsi.close                    set rsi=nothing                else                    '有剩余 匹配到公司帐号                    set rsg=server.CreateObject(""adodb.recordset"")                    rsg.open ""select * from member where [user]='""&gs_user&""'""conn13                        rsg(""chajia"")=rsg(""chajia"")-paynum                        rsg(""pnum"")=rsg(""pnum"")+1                        rsg.update                        set rsi=server.CreateObject(""adodb.recordset"")                        rsi.open ""select * from shenhe""conn13                        rsi.addnew                        rsi(""fuser"")=fuser                        rsi(""num"")=paynum                        rsi(""lid"")=0                        rsi(""tuser"")=gs_user                        rsi(""times"")=times                        rsi(""tid"")=0    '找不到匹配转公司                        rsi.update                        rsi.close                        set rsi=nothing                    rsg.close                    set rsg=nothing                end if            else                '没有第二个匹配 且有剩余 匹配到公司帐号                set rsg=server.CreateObject(""adodb.recordset"")                rsg.open ""select * from member where [user]='""&gs_user&""'""conn13                    rsg(""chajia"")=rsg(""chajia"")-paynum                    rsg(""pnum"")=rsg(""pnum"")+1                    rsg.update                    set rsi=server.CreateObject(""adodb.recordset"")                    rsi.open ""select * from shenhe""conn13                    rsi.addnew                    rsi(""fuser"")=fuser                    rsi(""num"")=paynum                    rsi(""lid"")=0                    rsi(""tuser"")=gs_user                    rsi(""times"")=times                    rsi(""tid"")=0    '找不到匹配转公司                    rsi.update                    rsi.close                    set rsi=nothing                rsg.close                set rsg=nothing            end if            end if        else            '没有匹配时 匹配到公司帐号            set rsg=server.CreateObject(""adodb.recordset"")            rsg.open ""select * from member where [user]='""&gs_user&""'""conn13                rsg(""chajia"")=rsg(""chajia"")-paynum                rsg(""pnum"")=rsg(""pnum"")+1                rsg.update                set rsi=server.CreateObject(""adodb.recordset"")                rsi.open ""select * from shenhe""conn13                rsi.addnew                rsi(""fuser"")=fuser                rsi(""num"")=paynum                rsi(""lid"")=0                rsi(""tuser"")=gs_user                rsi(""times"")=times                rsi(""tid"")=0    '找不到匹配转公司                rsi.update                rsi.close                set rsi=nothing            rsg.close            set rsg=nothing        end if        rsm.close        set rsm=nothing        '------------------------------------------------------------    end ifif conn.errors.count=0 then    conn.CommitTrans    call gotourl(""注册成功!""mymember.asp""")else    conn.RollbackTrans    call gotourl(""失敗nn""&err.description"back"")end if%>

解决方案

我用手机看,不方便,但这种情况,我想到一种情况,你看看是不是外键的原因

时间: 2024-11-02 17:01:27

sql-求助:网络中断时 ASP RollbackTrans事务回滚不完全的相关文章

求助...Membership 里面如何事务回滚?

问题描述 例如我在同时创建用户和往另外一张表里增加的内容时候,如果创建用户成功了但往另外一张表里面增加内容时出错了,在这样的情况下,我就需要用到事务回滚.MembershipCreateStatusstatus;MembershipUsernewUser=Membership.CreateUser(tb_UserName.Text,tb_Pwd.Text,FinanceLogic.Common.Instance().StrFilter(tb_Email.Text),FinanceLogic.Co

PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)_php技巧

本文实例讲述了PHP入门教程之使用Mysqli操作数据库的方法.分享给大家供大家参考,具体如下: Demo1.php <?php //使用 mysqli 对象操作数据库 //创建 mysqli 对象(资源句柄) $_mysqli = new mysqli(); //连接数据库 1.主机名(ip) 2.账户 3.密码 4.数据库 //mysqli_connect 函数 == $_mysqli -> connect(); $_mysqli -> connect('localhost','ro

Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍_python

1. 添加一个新对象 前面介绍了映射到实体表的映射类User,如果我们想将其持久化(Persist),那么就需要将这个由User类建立的对象实例添加到我们先前创建的Session会话实例中: 复制代码 代码如下: ed_user = User('ed', 'Ed Jones', 'edspassword')session.add(ed_user) 上面两段代码执行完后对象持久化了么?你或许会兴冲冲的跑去数据库里查看,结果却失望而归--数据库里什么都没有.为什么呢?因为SQLAlchemy采取的是

mysql事务回滚使用与常见问题介绍

方法如下: 1.修改c:appservmysqlmy.ini文件,找到skip-InnoDB,在前面加上#,后保存文件. 2.在运行中输入:services.msc,重启mysql服务. 3.到phpmyadmin中,mysql->show engines;(或执行mysql->show variables like 'have_%'; ),查看InnoDB为YES,即表示数据库支持InnoDB了. 也就说明支持事务transaction了. 4.在创建表时,就可以为Storage Engin

java-银行交易如何实现类似事务回滚

问题描述 银行交易如何实现类似事务回滚 在做的项目中,有一个基金产品的购买交易,里面的大致逻辑是 先判断用户是否基金开户,未开户发交易开基金账户>是否签约***(具体什么省略) 未签约发交易签约>最后一步发交易购买该款基金产品. 但现在的问题是购买失败则一个java类里的前两个交易都给做了现在,想不出什么类似操作数据库的事务回滚机制才控制这段交易,该交易在一个页面完成.望经验丰富的朋友给个思路,谢谢! 解决方案 你可以使用应用层的事务框架,或者自己实现一个简单的:先将操作放入临时的表中,然后一

PHP pdo 事务回滚代码实例

PHP pdo 事务回滚代码实例 $this->beginTransaction(); $this->exec('update people set age=2'); //$step1 = mysql教程_error();//你的类里,改成如果执行sql错误,获取错误代码,相应的函数 $this->exec('INSERT INTO course (course,num) VALUES ("数学",100)'); //$step2 = mysql_error(); i

在Java的JDBC使用中设置事务回滚的保存点的方法_java

新的JDBC3.0保存点的接口提供了额外的事务控制.他们的环境中,如Oracle的PL/ SQL中的大多数现代的DBMS支持保存点. 当设置一个保存点在事务中定义一个逻辑回滚点.如果发生错误,过去一个保存点,则可以使用rollback方法来撤消要么所有的改变或仅保存点之后所做的更改. Connection对象有两个新的方法,可帮助管理保存点: setSavepoint(String savepointName): 定义了一个新的保存点.它也返回一个Savepoint 对象. releaseSav

spring事务回滚只能配在service层吗。为什么我想在Test中添加事务不能进行回滚呢

问题描述 spring事务回滚只能配在service层吗.为什么我想在Test中添加事务不能进行回滚呢 <tx:advice id="txAdvice2" transaction-manager="txManager"> <tx:attributes> <tx:method name="inserttwo*" propagation="REQUIRED"/> </tx:attribut

spring的事务回滚策略为自定义异常

问题描述 spring的事务回滚策略为自定义异常 我配置的回滚策略如下 BusinessException是个自定义异常,继承了RuntimeException,按道理来说spring应该是捕捉到这个异常类或这个异常类的子类才进行的回滚,但是为什么抛出RuntimeException以后事务还是会回滚? 解决方案 http://shaohan126448.iteye.com/blog/1536879 解决方案二: spring异常与事务回滚Spring异常抛出触发事务回滚策略异常类型 &&