首页 > 解决方案 > 当 SQL 事务提交通过但客户端超时/失败时会发生什么

问题描述

如果事务提交到数据库,SQL 的预期行为是什么,它成功写入数据库,但是客户端以某种方式失败(超时、网络问题)并且事务提交的最终信息永远不会到达客户端。所以最终状态是:事务已提交,客户端超时或以某种不寻常的方式失败。这是否会使数据库处于客户端认为事务未提交的脏状态,或者 SQL 将确保如果此信息没有到达客户端,事务将被中止?

标签: sqltransactions

解决方案


如果您在执行时没有明确提交它,它会回滚。至少对于 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


推荐阅读