六、事务——维持数据一致性和恢复 1.事务的定义 事务提供了一种将T-SQL语句分组的方法,从而使它们能够被当成一个单元来处理:组中所有语句或都执行,或都不执行。 事务是确保一个或多个SQL语句的集合不被当成单一工作单元处理的机制,SQL Server自动将所有数据修改命令,包括单步改变请求,作为事务处理,缺省时,每个insert、update、delete语句被当成一个事务处理。 2.事务的作用 事务使SQL Server能保证: ·一致性——同时发生的查询或改变请求彼此不冲突,用户不能对正处于改变过程的数据进行查看或操作。 ·恢复——在系统失效时,数据库的恢复是完全的和自动的。 3.使用事务 a. 开始和确认事务 begin transaction和commit transaction可将任意数目的SQL语句封装起来,这两名的简单语法为: begin transaction commit transaction b. 回退事务 在commit transaction命令提交前任何时候可取消或回退事务,该命令的简单语法为: rollback transaction 4.检查事务状态 全局变量@@transtate记录了事务当前的状态。在执行一个语句后SQL Server通过记录所有事务变化来确定返回何种状态。 @@transtate可包含下列值: 值意 义 0事务进行中:一个显式或隐式事务有效;上一语句执行成功 1事务完成:事务完成并提交其变化 2语句异常中止:上一语句异常终止;对事务无影响 3事务异常中止:事务异常中止并回退所有变化 举例:在事务中,可在一个语句(如insert)后使用@@transtate确定该语句成功或失败对事务的影响。commit transaction Begin transaction Insert into publishers(pub_id)values(‘9999’) (1 row affected) select @@transtate ………………… 0 commit transaction select @@transtate ………………… 0 (1 row affected)
|