事务是作为单个逻辑工作单元执行的一系列操作。一个事务的操作必须具备以下4个属性,即ACID:
(1) 原子性(Atomicity): 食物必须作为工作的最小单位,即原子单位,其所进行的操作要么全部执行,要么全部不执行。
(2) 一致性(Consistency):事务完成后,所有的数据必须保持其合法性,即所有数据必须遵守数据库的约束和规则。
(3) 隔离性(Isolation):一个事务所做的修改必须与其他事务所做的修改隔离。即两个事务是互相隔离的,其中间状态的数据是不可见的。
(4) 持久性(Durability):事务执行完成后,其对数据库的修改将永久保持。
使用SAVE TRANSACTION语句可以在事务执行过程中建立一个存储点,使得用户能将事务回滚到该存储点的状态,而不是简单回滚的整个事务。SAVE TRANSACTION的语法格式为:
SAVE TRAN [SACTION]{savepoint_name | @savepoint_variable}
为了更有效地使事务进行工作,给出一些经验性的原则:
(1) 让事务尽可能的短。只有确认必须对数据进行修改才启动事务,执行修改语句,修改结束之后应该立即提交或回滚事务。
(2) 在事务进行过程中应该尽可能避免一些耗费时间的交互式操作,缩短事务进程的时间。
(3) 在使用数据操作语句(如INSERT、UPDATE和DELETE)时最好在这些语句中使用条件判断语句,使得这些数据操纵语句涉及到尽可能少的记录,从而提高事务的处理效率。
(4) 在SQL Server中虽然允许使用事务嵌套,但事务嵌套除了把事务搞得更复杂之外,并没有什么明显的好处。因此,在实际应用中不建议使用事务嵌套。
(5) 有意识地避免并发问题。建议在完成保护数据修改所需要的最后一个事务之后和再次需要一个事务来保护数据修改之间,关闭隐形事务。