温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

事务commit怎么用

发布时间:2026-09-16 11:18:12 来源:亿速云 阅读:94 作者:小樊 栏目:数据库

“事务 commit(提交)”通常是数据库事务里的概念,意思是:把事务里做的所有修改正式生效,保存进数据库。下面按常见场景给你讲。


一、什么是 commit

  • 事务(Transaction):一组操作,要么全部成功,要么全部失败
  • commit:确认提交,让修改永久生效
  • 如果不 commit,一般事务结束(或断开连接)后修改会回滚(rollback)

二、SQL 里怎么用(最基础)

1️⃣ 手动开启事务并提交

BEGIN;

UPDATE account SET money = money - 100 WHERE name = 'A';
UPDATE account SET money = money + 100 WHERE name = 'B';

COMMIT;

✅ 两条更新都成功 → COMMIT 后生效
❌ 如果出错 → 可用 ROLLBACK;


2️⃣ 出错回滚示例

BEGIN;

UPDATE account SET money = money - 100 WHERE name = 'A';
-- 假设下面这条报错
UPDATE account SET money = money + 100 WHERE name = 'B';

ROLLBACK;

➡ 所有修改撤销


三、不同数据库的小区别

MySQL(InnoDB)

START TRANSACTION;
-- 操作
COMMIT;

Oracle

-- Oracle 默认就会开启事务
-- 直接写 SQL
COMMIT;

PostgreSQL

BEGIN;
-- 操作
COMMIT;

四、编程语言里的事务 commit(举例)

Java(JDBC)

conn.setAutoCommit(false); // 关闭自动提交

try {
    stmt.executeUpdate(sql1);
    stmt.executeUpdate(sql2);
    conn.commit(); // 提交
} catch (Exception e) {
    conn.rollback(); // 回滚
}

Python(示例)

conn = get_conn()
cur = conn.cursor()

try:
    cur.execute(sql1)
    cur.execute(sql2)
    conn.commit()
except:
    conn.rollback()

五、常见坑 ⚠

  1. 忘了 commit → 数据看起来没保存
  2. 自动提交开着(autocommit=1)→ 每条 SQL 自动 commit
  3. 长事务不提交 → 锁表、性能问题

如果你是指:

  • 某个具体数据库(MySQL / Oracle / PG)
  • 某种语言(Java / Python / Go)
  • 或框架(Spring / MyBatis / Django)

可以直接告诉我,我给你更精准的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手