事务
原子性: 要么都成功,要么都失败。
一致性:事务前后数据完整性保持一致。
持久性:事务提交后不可逆。
隔离性:多个事务不互相干扰。
隔离所导致的问题
脏读:读到未提交事务的数据。
不可重复读:多次读取表中数据时同时数据被更改,导致多次读取数据内容不一致。
幻读:多次读取表中数据时同时有新插入的数据,导致多次读取数据行不一致。
事务的执行
MySql 默认开启事务自动提交。
SET autocommit = 0 关闭自动提交
SET autocommit = 1 开启自动提交
commit 提交 rollback 回滚
//模拟AB间转账的事务
SET autocommit = 0; 关闭自动提交
START TRANSACTION 开启事务
UPDATE table SET money = money - 500 WHERE name = 'A' A给B转500
UPDATE table SET money = money + 500 WHERE name = 'B'
COMMIT; 提交