【发布时间】:2011-04-26 23:42:52
【问题描述】:
在处理数据库事务时,假设事务中的所有语句都已毫无问题地执行,有哪些可能的条件(如果有)会导致事务中的最终 COMMIT 语句失败?
例如...假设您有一些 two-phase 或 three-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 而异?
【问题讨论】:
-
如果这是家庭作业,请标记它。
-
@Bob Jarvis:哇。谢谢你让我感觉年轻了很多!
-
家庭作业不是年龄的函数。 :-)
-
这是哪个品牌的数据库?
标签: sql transactions