如果将事务提交到数据库,将事务成功写入数据库,但是客户端以某种方式失败(超时,网络问题),并且提交事务的最终信息永远不会到达,则SQL的预期行为是什么?客户。因此,最终状态是:事务已提交,并且客户端以某种异常的方式超时或失败。这样会使数据库处于客户认为未提交事务的脏状态吗?还是SQL将确保如果此信息未到达客户,事务将中止?
答案 0 :(得分:0)
如果您在执行它时未明确提交它,它将回滚。至少对于Oracle数据库,我可以想象其他SQL数据库也会做同样的事情。
如果您确实显式提交并执行它,并且客户端程序崩溃或在返回结果之前发生了某些事情,那么它并不重要,因为它现在在数据库手中,而不是在客户端计算机上。您只需重新启动客户端程序,然后在此处查看查询结果即可。
来源: https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4010.htm https://docs.oracle.com/cd/B19306_01/server.102/b14220/transact.htm#CNCPT016