COMMIT 和 ROLLBACK 语句和事宜边界
任务单元和留存点
任务单元(unit of work,UOW) 也称为事宜,它是使用次序进程中一个可恢复的(recoverable) 操作序列。UOW 的经典示例是简朴的银行转帐事宜,即把资金从一个帐号转到另一个帐号中。在使用次序从一个帐号减去一天命量的资金之后,数据库会出现不差别的状况;在第二个帐号中增加异样数量的资金之后,这种不差别才会消弭。当这些点窜已经提交之后,其他使用次序才华利用它们。
当使用次序进程中的第一个 SQL 语句对数据库收回时,一个 UOW 隐式地初阶。一致个使用次序后续的一切读写操作被认为是一致个 UOW 的一部分。使用次序可以在稳当的时分收回 COMMIT
或 ROLLBACK
语句来结束 UOW。COMMIT
语句将这个 UOW 中所做的一切点窜耐久化,而 ROLLBACK
语句裁撤这些点窜。若是使用次序正常地结束,而没有收回显式的 COMMIT
或 ROLLBACK
语句,那么 UOW 会自动地提交。若是使用次序在 UOW 结束之前不测埠截至,那么这个任务单元会自动地回滚。
留存点(savepoint) 答理选择性地回滚组成 UOW 的操作子集,何等就不会丧失落整个事宜。可以嵌套留存点并可以同时拥有几个活跃的 留存点级别(savepoint level);这答理使用次序依据需求回滚到特定的留存点。假定在某个 UOW 中界说了三个留存点(A、B 和 C):
do some work;
savepoint A;
do some more work;
savepoint B;
do even more work;
savepoint C;
wrap it up;
roll back to savepoint B;
回滚到留存点 B 会自动地释放留存点 C,可是留存点 A 和 B 如故是活跃的。
关于留存点级其他更多信息以及阐明'); DB2 留存点支撑的注意示例,见 参考材料。
版权声明:
原创作品,答理转载,转载时请务必以超链接体例标明文章 原始来由 、作者信息和本声明。否则将清查功令责任。