事务处理详解与在ASP中的应用

事务处理的定义

  在做WEB开发时,不可避免的需对数据库进行查询、插入、更新、删除等操作,有时操作的一条数据,有时操作的是一组连续的指令集合,这时我们就须对数据操作进行事务处理,所谓事务,就是指一次逻辑单元操作组合,简单的说就是把一组操作,当作一个整体来处理。

  例如:要在数据库中需更新1000条数据,在更新过程中假设其中的一条数据发生错误,则所有已更新的数据都恢复成未更新时的初始状态。只有1000条记录全部更新成功之后,才最终确认更新。

  目前大多数事务处理是针对数据库操作概念,但事实上事务的定义范围是非常广的。


  为何要使用事务处理

  例如:在一个电子商务交易网站上,A公司需购买B公司的产品,当通过网站上的交易系统进行网上交易时对数据库需进行至少下面两个操作步聚:

1、从A用户的帐号上扣除相应的金额 http://www.mscto.com

2、将扣除的金额转到B用户的帐号上 软件开发网

  以上两个步聚须全部操作成功,整个交易才算完成,如果在第1步操作完成过程后,在进行第2步操作时发生错误,则整个事务处理失败,第1步操作取消,数据回滚到交易前的状态。


  此操作假如未使用事务处理机制则在第1步操作完成后,扣除了A用户帐号上的金额,由于发生错误,第2步操作却未能完成,交易金额未能到达B用户的帐号上。则此次交易出现,A付了钱,B并未收到,以此次交易失败告终。
事务处理机制在此过程中相当于一个保险机制,它能确保整个事件在没有错误的状态下进行,一旦发生错误,事务处理允许你回到最初始的状态,保证了数据完整。
诸如此类的例子生活中很多,比如银行取款、转账等一样,大家慢慢体会吧!当然,在只对数据库进行单次操作时,事务处理是没有实际意义的。 软件开发网

  下面我们来介绍下ASP中的事务处理机制


  方法一 利用ASP内置ADO组件中的Connection对象
在ASP中,Connection对象有三个方法来实现事务处理机制:BeginTrans,CommitTrans和RollbackTrans。


  在ASP中,当一个事务处理开始执行时,其后一直到事务处理结束之前,所有的一切程序都是暂时的,必须等到用CommitTrans方法结束事务处理之后,才能确定其中操作的有效性,如果这过程中发生错误,则可以用RollbackTrans方法取消事务处理,返回未执行程序之前。
具体程序如下:
  <%
  dim conn,sql
  set conn=server.createobject(\"adodb.connection\")
  conn.open\"driver={Microsoft access driver (*.mdb)};dbq=\" &   server.mappath(\"dataname.mdb\") '连接数据库
  conn.BeginTrans '事务处理开始
  sql=\"delete * from user where name='\" & yourname & \"'\"
  conn.execute(sql) '删除姓名为yourname的记录
  sql=\"insert into user(name,pass,sex)   values('yourname_2','111111','Boy')\"
  conn.execute(sql) '添加一条新记录
  if conn.errors.count=0 then
conn.CommitTrans '判断是否有错误发生,没有则提交CommitTrans方法结束             事务处理,完成以上程序
  else


conn.RollbackTrans '如果发生错误,则用RollbackTrans方法取消事务处理,             以上程序无效
  end if
  conn.close
  set conn=nothing
  %>


  方法二 利用数据库系统内部的事务处理机制


  通过在数据库服务器中编写包含事务的存储过程,完成对数据操作的事务处理。同时,利用ADO组件调用存储过程,还可以根据存储过程的返回代码判断事务处理是否执行成功。

软件开发网


  方法三 利用MTS(Microsoft Transaction Server)组件的事务处理机制实现事务处理需要注意的是,这种机制下的事务不能跨越多个ASP页,如果一个事务处理需要来自多个组件的对象,则须将对这些对象的操作组合在一个ASP页中。


事务处理能保证数据库记录统一性与完整性,因此在许多项目中都会采取事务处理机制来避免错误的发生。建议大家以后在做开发时,牵涉到对数据库进行多个单元操作时,起用事务处理机制加以处理,确保整个处理过程没有错误发生。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL事务处理是数据库管理系统最重要的概念之一。在MySQL,事务是指一组SQL语句,这些语句要么全部执行成功,要么全部不执行。如果在执行事务的过程出现了错误,MySQL会自动回滚所有的操作,保证数据的一致性和完整性。 在MySQL,事务的处理方式有两种:自动提交和手动提交。默认情况下,MySQL采用的是自动提交的方式,即每个SQL语句执行完毕后都会自动提交事务。如果需要手动提交事务,则需要使用BEGIN、COMMIT和ROLLBACK等语句来控制事务的提交和回滚。 下面是一个MySQL事务处理的实例: 1. 创建一个测试表: CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 2. 开始一个事务: BEGIN; 3. 向测试表插入一条数据: INSERT INTO `test` (`name`,`age`) VALUES ('Tom',20); 4. 向测试表插入一条错误数据: INSERT INTO `test` (`name`,`age`) VALUES ('Jerry','twenty'); 5. 提交事务: COMMIT; 6. 查看测试表的数据: SELECT * FROM `test`; 在这个实例,我们使用了BEGIN、COMMIT和ROLLBACK等语句来控制事务的提交和回滚。在执行第4步时,由于插入了错误的数据,MySQL会自动回滚所有的操作,保证数据的一致性和完整性。最后,我们可以通过SELECT语句来查看测试表的数据,可以发现只有一条数据被插入成功。 总之,MySQL事务处理可以确保数据的一致性和完整性,是数据库管理系统最重要的概念之一。在实际应用,我们需要根据具体的业务需求来选择自动提交或手动提交的方式,并且在编写SQL语句时需要考虑到事务处理的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值