一、事务的概念:是一组操作的集合,多个操作作为一个整体向系统提交,要么都执行,要么都不执行,事务是一个不可分割的工作逻辑单元。
例如:银行转帐业务,假设张三向李四转帐有三个步骤,即在SQL里有三段语句(1.查询张三帐户余额;2.执行转帐,张三帐户余额扣减;3.执行转帐,李四帐户余额增加 ),这三段语句作为一个整体向系统提交执行,要么都提交成功,要么都撤销回滚,即都不成功。不能出现李四帐户余额增加,而张三帐户余额未扣,或者相反的情况。不管转帐成功或不成功,只要事务完成,两帐户余额的和是不变的。
注:
1)SQL SERVER里的事务,默认是自动开启状态,即隐式事务,只要出现增、删、改的语句,一执行完,系统会自动进行提交。
2)要实现上述的要求,将多个操作放在一个事务内,就需要去手动开启事务,及提交事务或回滚事务
二、事务的特性:
1)原子性(Atomicity):事务是不可分割的最小操作单元,要么都执行,要么都不执行;
2)一致性(Consistency):当事务完成后,数据必须处于一致状态。例:上述的银行转帐案例,不管是转帐成功,还是转帐失败,两帐户余额之和都是恒定不变的
3)隔离性(Isolation):数据库系统提供了隔离机制,不同的事务间是独立的。例:张三和李四之间的转帐与王五和赵二之间的转帐,即两个事务永远是相互独立的;
4)持久性(Duralbility):事务完成后,它对数据库的修改被永久保持。