日期:2014-05-17  浏览次数:20883 次

[求教]关于asp中使用事务的<高分>
偶本人非asp程序员,想请教下asp中使用事务的场合和时机。

一直认为,批量DML更新操作语句提交时候需要用事务来保证它的完整性。最近看过一些动网插件的源代码,发现批量DML更新操作语句提交时几乎没有加入事务,遂去了一个论坛求教。

那里的朋友的看法是:事务会大为耗损性能与资源,一般使用时候都很慎重,在流程中包含不可预知的结果时才去使用,若果可以对有可能发生异常的代码段预知所有异常,那么不使用事务,直接自己写回滚代码。

有点迷茫,所以也想在这里综合一下大伙的宝贵经验。谢谢大家!

------解决方案--------------------
有些数据哭默认开启事务的就可以在预知的错误下回滚事件了,不支持默认开启事务的还需要代码开启
------解决方案--------------------
一般执行多个语句时使用事务。
------解决方案--------------------
如果各语句间存在一定的依赖关系可以使用!
------解决方案--------------------
http://www.5iaspx.com/aspnet/article.asp?pid=8&/16909.html
------解决方案--------------------
还是初学者,弄不懂
------解决方案--------------------
自己回滚其实也挺好,不过事务肯定是方便,而且安全一些

如lz说:程序代码写好写完善了就不需要事务了

关键就是你是否能确定你写完善了?
用事务会简单许多,过程清晰且安全,对于更为重要的数据来说,把开销转到硬件上也没有什么不对的
------解决方案--------------------
up
------解决方案--------------------
asp服务器端代码执行的过程中,受到外界的干扰比较少,而且数据量一般较小,安全性要求一般较低,大多数情况下是不用事务的好
事务本身耗费资源较大,但是可以确保数据完整性,是否使用事务,关键还是看应用对数据完整性的要求有多大,值不值得付出这样的资源代价(降低性能或增加硬件投资)
------解决方案--------------------
事务机制是为了预防未知的错误,如服务器的崩溃,停电等,和数据库的并发错误超时等,启用了事务机制就可以更好的保证数据的完整性
------解决方案--------------------
其实动网的东西好多时间都不用事务`是因为他们的CHECK 过程比较繁锁 也比较多~!

另外一个很简单的原因就是 他对于一个东西的限定 是在根上限定~!

有很多人写程序总是会加很多的事务~!这没有什么不对~!

只能说是 对于编程不太精通~! 或是对自己没有信心~!还有就是想的不够周全~!

就像我这样的菜鸟~!不用事务`就得挂`呵呵~!
------解决方案--------------------
在asp中如何使用事务??
------解决方案--------------------
asp里面ADO 一般都是自动事务

------解决方案--------------------
:)
------解决方案--------------------
第一、什么时候用事务?
第二、如何使用事务?

=========================
第一,当需要多条语句都满足才执行的时候需要启动事务,比如:银行的转帐,A账户转出100元给B账户,那么,这样时候就要A减去100,和B加100都要满足才可以,所以这个时候就要开启事务来处理,当有一个执行失败后就会回滚事务,回到二条都没有执行的状态,即,A没有减,B没有加。

第二,事务的使用需要用到 begin tran ,commit tran,rollback tran。下面用一个例子来说明吧。
declare @error int--定义一个变量来存储是否执行有错误
set @error = 0--将变量付值为 0
begin tran --开启事务
Insert TableA; -- 执行SQL语句1
set @error = @error + @@error --将全局变量@@error(返回最后执行的SQL 语句的错误代码。)加给@error
Insert TableB; --执行SQL语句2
set @error = @error + @@error --同上
If @error=0 then --判断@error是否为 0 (为0表示没有错误,> 0则表示有错误)
commit tran;--如果没有错误那么执行事务
else
rollback tran; --否则回滚事务
end if

==================================