我已经编码多年,但前段时间我问自己这个问题。在我的大学里,我从未见过这个问题得到解决。我对此非常好奇。
那么,关于代码和 CPU 到底会发生什么?我对代码很好奇。
例如,如果您正在运行一个桌面程序并且您正在向数据库中插入数据,那么在我上面提到的场景中会发生什么?
MyDBConnection cn = new MyDBConnection();
cn.start();
cn.beginTransaction();
cn.insertData("INSERT INTO T_TABLE VAVLUES(1,2,'WHITE LIES')");
cn.insertData("INSERT INTO T_TABLE VAVLUES(1,3,'BLACK LIES')");
-------------------------------------------------------------------
Enery power off, application hang for whatever reason.
-------------------------------------------------------------------
cn.insertData("INSERT INTO T_TABLE VAVLUES(1,4,'VOID LIES')");
cn.commit();
cn.close();
之后会发生什么?没有什么?
数据被破坏(据我认识的人说)?有回滚或 RAM 获得空闲或挂起?操作系统试图恢复进程?
任何人都知道一些程序来忍受这些事故?