事务由多个单独操作甚至其他事务构成,对于多个相关的操作或是当多个用户并发更新数据库时,事务是维护数据完整性所必备的。
1. 事务的概念
事务是一组被当作一个单元执行的操作,它们在执行时要么全部成功,要么全部失败。
2. 何时使用事务
<1>. 在批处理过程中,必须把多个行作为一个单元插入,更新或删除。
<2>. 只要一个表发生了变化,就需要其他表与它同步。
<3>. 同时修改两个或多个数据库中的数据。
<4>. 在分布式事务中,在不同服务器上操作数据库中的数据。
3. 理解ACID属性
事务有4个属性,常称为ACID属性:原子性(Atomicity),一致性(Consistency),孤立性(Isolation)和持续性(Durability)。
4. 事务设计
事务设计的目的就是定义和归档数据库系统所需的高级事务特征,包括如下内容:
<1>. 事务需要的数据
<2>. 事务的功能性特征
<3>. 事务的输出
<4>. 对用户的重要性
<5>. 期望的利用率
有以下3种主要类型的事务:
检索事务:从屏幕上的显示检索数据。
更新事务:在数据库中插入新的记录,删除旧的记录或修改现有记录。
混合事务:涉及检索数据和更新数据。
5. 事务状态
活动:初始
部分提交:最后一条语句执行后
失败:正常执行不能继续
终止:事务回滚,一切回到事务执行之前
提交:
6. 如何编写事务
在SQL Server中使用下面3个T-SQL语句控制事务。
BEGIN TRANSACTION:表示事务的开始。
COMMIT TRANSACTION:表示事务成功结束,告知数据库保存所做的工作。
ROLLBACK TRANSACTION:表示事务不成功,告知数据库回滚到开始事务以前的状态。
注意:这里没有END TRANSACTION语句。事务是以(显示或隐式)提交和回滚结束的。
(1)创建父子关系
插入数据:
现在就有了很好的父子关系,在Person表和PersonDetails表中有了两个父记录和两个匹配的子记录。
(2)用T-SQL编写事务
子表或外键表包含的记录必须匹配父表或主键表中已有的主键列值。
创建一个名为sp_Trans_Test的存储过程。