diff --git "a/14\350\226\233\346\231\226/\347\254\224\350\256\260/9.19\344\272\213\345\212\241.md" "b/14\350\226\233\346\231\226/\347\254\224\350\256\260/9.19\344\272\213\345\212\241.md" new file mode 100644 index 0000000000000000000000000000000000000000..373e2a4a7a828007c75bf021d449dc2db6c9f6b2 --- /dev/null +++ "b/14\350\226\233\346\231\226/\347\254\224\350\256\260/9.19\344\272\213\345\212\241.md" @@ -0,0 +1,37 @@ +# 一、事务 + +### 1、什么是事务 + +事务是在数据库上按照一定的逻辑顺序执行的任务序列,是恢复和控制并发的基本单位,既可以由用户手动执行,也可以由某种数据库程序自动执行。 + +### 2、事务的属性 + +##### 2.1、原子性 + +保证任务中的所有操作都执行完毕;否则,事务会在出现错误时终止,并且回滚到操作之前的原始状态。 + +##### 2.2、一致性 + +在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全符合所有的预设规则,其中包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 + +##### 2.3、隔离性 + +数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。 (保证不同的事务能够相互独立的执行) + +##### 2.4、持久性 + +执行事务处理后的结果,对数据的修改是永久性的。 + +### 3、事务分类 + +##### 1、显式事务 + + 用 begin transaction 明确指定事务的开始,由 commit transaction 提交事务、rollback transaction 回滚事务到事务结束。 + +##### 2、隐式事务 + + 通过设置 set implicit_transactions on 语句,将隐式事务模式设置为打开。当以隐式事务模式操作时,不必使用 begin transaction 开启事务,当一个事务结束后,这个模式会自动启用下一个事务。只需使用 commit transaction 提交事务或 rollback transaction 回滚事务即可。 + +##### 3、自动提交事务 + +SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。