九、事务
事务
DCL用来控制数据库的访问,其中有关事务的SQL语句有:
-
COMMIT: 提交事务处理
-
ROLLBACK: 事务处理回退
-
SAVEPOINT: 设置保存点
-
LOCK: 对数据库的特定部分进行锁定
一、事务的ACID特性
-
原子性(Atomicity)
数据库事务的不可再分原则。即组成事务的所有SQL必须:要 么全都执行,要不全不执行
-
一致性(Consistency)
指数据的规则,在事务前后应保持一致
-
隔离性
某个事务的操作对其他事务不可见
-
持久性
当事务提交完成后,其影响应该保留下来,不能撤销
## 其他需要注意的事项:
-
只有InnoDB引擎支持的表才 支持事务操作
-
默认情况下,MYSQL是自动提交事务的,且不能回滚。如果操作一个事务,在commit或者rollback后,之后的操作又自动提交
-
和Orcal一样,DDL语句是不能回滚的,并且部分的DDL语句会造成隐式的提交,因此最好事务中不要涉及DDL语句。
二、事务对数据库的操作
步骤主要分为以下三点
-
开启事务
-
执行SQL操作
-
提交/回滚
具体操作:
-
开起手动处理事务模式
set autocommit = false;
-
开始事务(推荐)
START TRANSACTION;
BEGIN (二选一);
-
回滚
rollback;
-
提交
commit;(回滚和提交同时只能执行一个)
-
设置保存点
savepoint point1; (保存点必须设置在事务内)
-
回滚到保存点
rollback to point1;