SQL Server 2005 事务之ACID
首先描述下事务的概念以及事务的特性:事务是作为单个逻辑工作单元执行的一系列操作,同时具备原子性、一致性、隔离性和持久性 (ACID)属性。 原子性:事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。 一致性:事务完成时,必须使所有的数据都保持一致状态。 隔离性:由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。 持久性:事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。 下面用简单的示例(Northwind数据库)来说明这一点。 原子性: 正常情况下是先删除订单详细表,再删除订单信息,下面倒过来为了演示事务的原子性,生产中这么写就是属于逻辑错误。 USE Northwind; GO BEGIN TRAN ; DELETE FROM dbo.Orders WHERE OrderID = 10249 ; DELETE FROM dbo." Order Details" WHERE OrderID = 10249 ; COMMIT TRAN ; GO 执行结果: 表Orders因为违反引用完整性,删除操作失败, 表Order Details成功删除2行.从这个例子来看第一条T - SQL语句执行失败而第二条T - SQL却执行成功,这不明显证明事务不具有原子性。别急接 着往下看,因为BEGIN TRAN与END