【发布时间】:2019-07-01 17:17:49
【问题描述】:
如果事务提交到数据库,SQL 的预期行为是什么,它成功写入数据库,但是客户端以某种方式失败(超时、网络问题)并且提交事务的最终信息永远不会到达客户。所以最终状态是:事务已提交,客户端超时或以某种不寻常的方式失败。这是否会使数据库处于客户端认为事务未提交的脏状态,或者 SQL 将确保如果此信息没有到达客户端,事务将被中止?
【问题讨论】:
标签: sql transactions
如果事务提交到数据库,SQL 的预期行为是什么,它成功写入数据库,但是客户端以某种方式失败(超时、网络问题)并且提交事务的最终信息永远不会到达客户。所以最终状态是:事务已提交,客户端超时或以某种不寻常的方式失败。这是否会使数据库处于客户端认为事务未提交的脏状态,或者 SQL 将确保如果此信息没有到达客户端,事务将被中止?
【问题讨论】:
标签: sql transactions
如果您在执行时没有明确提交它,它会回滚。至少对于 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
【讨论】: