ADO.NET学习之SqlTransaction
事务是一组必须全部成功或全部失败的操作。事务的目标是保证数据总能处于有效一致的状态。
事务有4个被称为ACID属性的特征:
- Atomic(原子性):事务中所有的步骤必须同时成功或失败。只有事务中的所有步骤全部完成了,才能认为一个事务结束
- Consist(一致性):事务使底层数据库在稳定状态间转换
- Isolated(隔离性):每个事务都是独立的实体。一个事务不能影响同时运行的其他事务
- Durable(持久性):在事务成功之前,事务产生的变化永久的存储在媒质上,通常是硬盘上。必须维护日志以保证即使出现硬件故障或网路失败,数据库也能恢复到有效状态
以转账场景为例,假设有如下的2个账户:
从账户A1转10元到A2账户,先从A1账户中扣除10,再在A2账户中添加10。如果从A1的账户中扣除了钱,而A2账户中确没有添加钱,这种情况就是不可接受的。所以,2步要么都要成功,要么就都要失败,如果一个成功,一个失败,就要回滚操作,来保持数据的完整性。在ADO.NET中可通过transactions事物来完成。
第一步,创建表,并添加数据
Create Table Accounts
(
AccountNumber nvarchar(10) primary key,
CustomerName nvarchar(50),
Balance int
)
Insert into Accounts values('A1', 'Mark', 100)
Insert into Accounts values('A2', 'Steve', 100)
第二步,创建页面
<div style="font-family: Arial">
<table border="1" style="background: brown; color: White">
<tr>
<td>
<b>Account Number </b>
</td>
<td>
<