首页/数据/SQL 速查/事务基础:BEGIN / COMMIT / ROLLBACK
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条
变更与事务52 条
性能与执行计划72 条

事务基础:BEGIN / COMMIT / ROLLBACK

把多条语句打包成原子操作:MySQL 用 START TRANSACTION 或 BEGIN,PostgreSQL 用 BEGIN;提交用 COMMIT,撤销用 ROLLBACK。

SQL 速查数据更新于 2026-10-12

示例

示例
-- 两库通用写法
START TRANSACTION;   -- PostgreSQL 里等价的 BEGIN 更常用
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;              -- 中途出错:ROLLBACK;
原子性COMMIT 前对外不可见(READ COMMITTED 及以上)
显式事务MySQL autocommit=1 下每条语句自成一个事务;显式 BEGIN 后才成组
时长事务保持短:长事务占 undo/WAL、阻塞 DDL 与清理

易错点

  • 转账类操作忘记同一事务:一侧提交、一侧失败会产生资金不平,业务写操作必须成组提交
  • 事务里混入耗时操作(HTTP 调用、大批量计算)会长时间持锁,把网络调用移到事务外

数据来源与参考

  • MySQL 8.0 Reference Manual · START TRANSACTION
  • PostgreSQL Documentation · BEGIN
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌