1、事物的理解:
事务(Transaction)是并发控制的基本单位。指作为单个逻辑工作单元执行的一系列操作,而这些逻辑工作单元需要具有原子性,一致性,隔离性和持久性四个属性,统称为ACID特性。
Atomic(原子性):事务中的所有元素作为一个整体提交或回滚,事务的个元素是不可分的,事务是一个完整操作。
Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。事物完成时和事物开始之前,数据存储中的数据处于一致状态。保证数据的无损。
Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。
Durability(持久性):事务结束后,事务处理的结果必须能够得到固化。它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。
2、事物的应用
在数据库中要完成事物的操作,一般是将事物写在存储过程中。其具体的应用格式见下面的程序:
create procedure mon
--创建存储过程,定义几个变量
@toID int, --接收转账的账户
@fromID int ,
--转出自己的账户@momeys money
--转账的金额
as
begin tran
--开始执行事务
update bb [email protected] where [email protected]
-执行的第一个操作,转账出钱,减去转出的金额
update bb setmoneys=moneys+@momeys where [email protected]
--执行第二个操作,接受转账的金额,增加转来的金额
[email protected]@error<>0
--判断如果两条语句有任何一条出现错误
begin
rollback
–开始执行事务的回滚,恢复的转账开始之前状态return 0
end
go
else
--如何两条都执行成功begin
commit
--执行这个事务的操作return 1
end
go
总结:其实在应用中可以将事物理解成一句话:写在事物中的程序,要么全部执行成功,要么不执行或者执行错误后回滚到执行事物之前的状态。