刚开始学sql,看到别人说事务处理,好像很厉害的东东,不明白是什么,粗略看的书上好像也没有,求高手解答一下,以利于学习
例:
create table Table1 (a int)
go
begin tran
insert table1 values(1) ----这句是对的
insert table1 values(aaa) ----这句由于类型不一样将报错
commit tran
select * from table1 ------结果是两句都没插入!应为他们是一个事务
事务处理:
你执行一批 SQL语句 或 存储过程 或 触发器
当执行有问题时, 会一起回滚,就是会复到没执行这批操做的状态,这样就保证了数据的一致性
begin tran
insert ...
if @@error <> 0 rollback
update ...
if @@error <> 0 rollback
commit
事务
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为 ACID属性,只有这样才能成为一个事务:
原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
一致性
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都必须是正确的。
隔离性
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
持久性
事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
指定和强制事务处理
SQL 程序员要负责启动和结束事务,同时强制保持数据的逻辑一致性。程序员必须定义数据修改的顺序,使数据相对于其组织的业务规则保持一致。然后,程序员将这些修改语句包括到一个事务中,使 Microsoft® SQL Server™ 能够强制该事务的物理完整性。
企业数据库系统有责任提供一种机制,保证每个事务物理的完整性。SQL Server 提供:
锁定设备,使事务相互隔离。
记录设备,保证事务的持久性。即使服务器硬件、操作系统或 SQL Server 自身出现故障,SQL Server 也可以在重新启动时使用事务日志,将所有未完成的事务自动地回滚到系统出现故障的位置。
事务管理特性,强制保持事务的原子性和一致性。事务启动之后,就必须成功完成,否则 SQL Server 将撤消该事务启动之后对数据所作的所有修改。
http://expert.csdn.net/Expert/topic/1785/1785314.xml?temp=.6054041
简单的说,事务是用来维护数据完整性,一致性的数据更新机制,以此来保证你在执行多于一个以上的数据更新动作时的数据完整,一致。保证全部更新的结果一致,要不全部成功,否则全部失败。个人观点,仅供参考。