> 文档中心 > SQL事务

SQL事务

事务特征特性:ACID
-- 1、原子性:要么都成功 要么都失败
-- 2、一致性:事务执行前和执行后数据库的状态保持一致性
-- 3、持久性:当事务成功后持久化到磁盘 一旦提交不可逆
-- 4、隔离性:事物之间的隔离 多个用户访问数据库时 数据库为每一个用户开始事务 不会被其他用户操作干扰

隔离所导致的一些问题(脏读、不可重复度、幻读)

-- 脏读
一个事务读取了另一个事务未提交的数据
-- 不可重复读
多次读取的结果是不一致的(不一定是错误的 某些场合不对)
-- 幻读(虚读)
一个事务中读取倒别人事务插入的数据 导致前后读取不一致

-- 事务-- mysql 是默认开启事务自动提交的-- 关闭SET autocommit = 0-- 开启SET autocommit = 1-- 事务开始 标记这这个事务的开始 之后的sql都在同一个事务内START TRANSACTIONINSERT xxINSERT xx-- 提交 持久化(成功)COMMIT-- 回滚 回到原来的样子ROLLBACK-- 事务结束SET autocommit = 1-- 了解-- SAVEPOINT 保存点名   设置一个事务的保存点-- ROLLBACK TO SAVEPOINT 保存点名 回滚到保存点-- PELEASE SAVEPOINT 保存点名 撤销保存点

关于事务的举例:

-- 关闭自动提交SET autocommit = OFF;SHOW VARIABLES LIKE 'autocommit';-- 开启事务(一组事务)START TRANSACTION; UPDATE shop SET money = money + 500 WHERE NAME = 'A';UPDATE shop SET money = money + 10000 WHERE NAME = 'B';COMMIT; -- 提交事务 一旦提交就被持久化了ROLLBACK; -- 回滚SET autocommit = on; -- 恢复默认值

开发者涨薪指南 SQL事务 48位大咖的思考法则、工作方式、逻辑体系