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**