老师,这个地方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操作,将数据恢复到原来的状态。
实际上你执行的语句都是通过网络发给数据库的:
发送begin;
发送update ...
网断了
过一会数据库会检测到事务超时自动回滚
Sign in to make a reply
洋火2005
老师,这个地方commit时提交事务,将所有sql语句所做的修改进行保存。如果commit执行失败,事务也就失败!那么,什么情况下commit时执行失败呢。请举个例子!