MYSQL事务属性
2023-03-03 09:29:00
#### 事务
> 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
1. 原子性(atomicity) 一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做
2. 一致性(consistency) 事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的
3. 隔离性(isolation) 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰
4. 持久性(durability) 持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响
```sql
BEGIN;
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
COMMIT;
```
BEGIN语句标记一个事务开始,COMMIT为提交事务。一个事务,只有提交成功(COMMIT),数据变更才会被保留下来。在这个过程中,如果发生了意外情况,事务在没有提交前连接中断了,这个事务会被自动回滚,就像什么事也没有发生一样
**牢牢记住,开启一个事务后(BEGIN),要么提交COMMIT(commit),要么回滚ROLLBACK(rollback)。开发中,千万不要忘记COMMIT或ROLLBACK**