sql - 当 SQL 事务提交通过但客户端超时/失败时会发生什么
问题描述
如果事务提交到数据库,SQL 的预期行为是什么,它成功写入数据库,但是客户端以某种方式失败(超时、网络问题)并且事务提交的最终信息永远不会到达客户端。所以最终状态是:事务已提交,客户端超时或以某种不寻常的方式失败。这是否会使数据库处于客户端认为事务未提交的脏状态,或者 SQL 将确保如果此信息没有到达客户端,事务将被中止?
解决方案
如果您在执行时没有明确提交它,它会回滚。至少对于 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
推荐阅读
- javascript - 背景尺寸封面不适用于移动设备上的较长页面
- mongodb - Mongo DB 服务间歇性停止
- python - 每当两个重置之一时重置两个累积和列
- binance-smart-chain - 在 BSC 网络中创建令牌时,我无法弄清楚在 uint256 行 public totalSupply 中的 1 之后需要写入多少个零
- python - 带格式的 Python 文本换行
- apache-spark - 在 Spark 3.1 中使用 java 进行分区
- entity-framework-core - 使用 Simple Injector 为 Repository 注册通用解析器
- swift - UIImage 上的 MapKit 功能,放置图钉/注释
- hadoop - 更改具有大量数据的 Impala/Hive 表中的架构?
- java-8 - mvn install 在打包之前运行