COMMIT语句(在SQL中)可能会失败吗?怎么样?

前端之家收集整理的这篇文章主要介绍了COMMIT语句(在SQL中)可能会失败吗?怎么样?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在处理数据库事务时,假定事务中的所有语句都已经执行而没有问题,那么可能会导致事务中的最后一个COMMIT语句失败的条件(如果有的话)?

例如,假设你有一些two-phasethree-phase commit protocol你做了一堆语句,然后等待一些主进程告诉你什么时候可以最后提交事务:

-- <initial handshaking stuff>
START TRANSACTION;
-- <Execute a bunch of sql statements>
-- <Inform master of readiness to commit>
-- <Time passes... background transactions happening while we wait>
-- <Receive approval to commit from master (finally!)>
COMMIT;

如果您的代码到达最终的COMMIT语句并将其发送到您的DBMS,您是否可以在该语句中收到错误(唯一性问题,数据库已满等)?有什么错误?为什么?它们如何出现?它根据您运行的DBMS而有所不同吗?

解决方法

COMMIT可能会失败.您可能有足够的资源来记录您希望做出的所有更改,但缺少实际实施更改的资源.

这不是考虑其他原因可能会失败:

>更改本身可能不适合数据库的约束.
功率损失阻止事情完成.
>所请求的选择并发级别可能不允许更新(例如,游标更新修改的表).
>提交可能会超时,或者由于饥饿问题而导致超时的连接.
>客户端和数据库之间的网络连接可能会丢失.

而所有其他“简单”的原因并不在我头上.

猜你在找的MsSQL相关文章