事务
一、定义
事务:需要在同一个处理单元中执行的一系列增删改处理的集合。
二、语法
2.1 数据库
SQL SERVER
BEGIN TRANSACTION; DELETE..... UPDATE ..... INSERT ...... COMMIT;
COMMIIT 可以替换为ROLLBACK
MYSQL
START TRANSACTION; DELETE..... UPDATE ..... INSERT ...... COMMIT;
COMMIT 可以替换为ROLLBACK
2.1 事务结束语句
COMMIT:提交处理
一旦提交,就无法恢复到事务开始之前的状态;
ROLLBACK:取消处理
一旦回滚,数据库就恢复到事务开始之前的状态
三、ACID特性
3.1 原子性(Atomicity)
事务结束时,所有增删改处理要么全部实行,要么全部不执行;
3.2 一致性(Consistency)
事务中包含的处理要满足数据库提前设置的约束,违凡约束条件的语句会被回滚,未违凡的会被执行。
一致性也被成为完整性
CREATE TABLE test.dbo.null_count_2 ( 值 varchar(20) NOT NULL ) ; BEGIN TRANSACTION; insert into test.dbo.null_count_2 values(null) -- 因为设置了NOT NULL约束,所有该语句不会执行 ; insert into test.dbo.null_count_2 values('X') -- 会被执行 COMMIT;
3.3 隔离性
事务之间不会相互干扰;某个事务的操作若是未被提交,则该事务的任何更改,对其他事务都是不可见的。
3.4 持久性
持久性也可以称为耐久性,指的是事务(提交或者回滚)后,DBMS能够保证改时间点的数据状态会被保存的特性;
最常见的保证持久性的方法是将事务的执行记录保存到硬盘等存储介质中(该执行记录被称为日志),
可以通过日志恢复到故障发生前的状态