acid
原子性(Atomicity)
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性(Consistency)
一致性是指事务必须使数据库从一个一致的状态变到另外一个一致的状态,也就是执行事务之前和之后的状态都必须处于一致的状态。
隔离性(Isolation)
隔离性是指当多个用户并发访问数据库时,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)
持久性(Durability)
持久性是指一个事务一旦被提交了,那么对于数据库中的数据改变就是永久性的,即便是在数据库系统遭遇到故障的情况下也不会丢失提交事务的操作。
事务处理
自动提交
在 MySQL 命令行的默认设置下,事务都是自动提交的,也就说用户不用意识此事,执行 SQL 语句后就会马上执行 【COMMIT 】操作。特别是当存储引擎为MyISAM的情况下,因为它本身就是不支持事务处理的。只要执行了命令,所有的命令就会被提交。因此要显式地开启一个事务务须使用命令 【BEGIN】 或 【START TRANSACTION】后,才不会自动提交,只有明确执行了【COMMIT】命令后才会被提交,再次之前也就可以执行【ROLLBACK】这样的命令了。
---------------------
查看自动提交模式
SELECT@@AUTOCOMMIT;
我们可以看到我们目前自动提交的模式是开启的(0:为未开启;1:开启)
修改自动提交模式
修改自动提交模式使用的是【SET】语句:
将自动提交模式设置为OFF的语法是:SET AUTOCOMMIT =0;
将自动提交模式设置为ON的语法是:SET AUTOCOMMIT =1;
---------------------
简单事务回滚
使用事务回滚主要是使用三个命令,他们的语法如下:
命令 | 解释 |
---|---|
BEGIN(或:START TRANSACTION); | 开启事务 |
COMMIT; | 提交整个事务 |
ROLLBACK; | 回滚到事务开始的状态 |
ALTER TABLE user ENGINE = InnoDB;
SHOW CREATE TABLE user;
BEGIN;
SELECT * FROM user;
DELETE FROM user;
SELECT * FROM user;
ROLLBACK;
SELECT * FROM user;
使用rollback回滚完成,使用commit提交不能回滚。
部分回滚(savepoint)
- DROP DATABASE;
- DROP TABLE;
- DROP;
- ALTER TABLE;
- 四条命令不能执行回滚。
作者:Newtol
来源:CSDN
原文:https://blog.csdn.net/m0_37888031/article/details/80704344
版权声明:本文为博主原创文章,转载请附上博文链接!