Discuss / SQL / commit什么时候才是失败呢?

commit什么时候才是失败呢?

Topic source

洋火2005

#1 Created at ... [Delete] [Delete and Lock User]

老师,这个地方commit时提交事务,将所有sql语句所做的修改进行保存。如果commit执行失败,事务也就失败!那么,什么情况下commit时执行失败呢。请举个例子!

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

账户A没有一百块钱不就失败了吗?

第一条语句执行完,还没执行第二条语句的时候忽然死机了,重新启动的时候就会通过数据库的日志进行rollback操作,将数据恢复到原来的状态。

廖雪峰

#4 Created at ... [Delete] [Delete and Lock User]

实际上你执行的语句都是通过网络发给数据库的:

发送begin;

发送update ...

网断了

过一会数据库会检测到事务超时自动回滚


  • 1

Reply