发信人: rollback()
整理人: chedong(2000-04-02 12:57:55), 站内信件
|
实际上在这里的COMMIT没有多大作用,它顶多能结束用户自定的(嵌套)事务,
但不是真正的COMMIT,如果修改事务和其导致的其它连带事务(系统认为它们为
一个事务整体)任何地方发生Rollback那么整个事务全部Rollback,这样才能保
证系统回复到事务以前的状态,否则便违背了这个原则,造成数据不完整,不一
致了。
比如说,如果你有语句1
UPDATE t1 set t1.c1 = X
并且此语句触发了t1的一个UPDATE Trigger,其中有语句2:
UPDATE t2 set t2.c1 = Y
实际上DBMS把语句1产生的事务和T1的UPDATE Trigger产生的事务视为整体,所以
如果语句2发生错误,系统不止会Rollback语句2还会Rollback语句1,以及其它可
能存在的连带事务,实际上只要你在Trigger的任何地方使用显式的Rollback或者
系统产生了任何隐式的Rollback,那么它的效果是一样的,不要以为你可以人为
控制用户自定义的嵌套事务一层层地Rollback。
【 在 junqiangz (小小鸟) 的大作中提到: 】
: 【 在 rollback (true) 的大作中提到: 】
: : 由修改导致的连动作全部回滚,如果修改回滚而触发器内的动作不回滚,那就造
: : 成了数据不完整了。。
: : 【 在 project (等待...) 的大作中提到: 】
: .......
-- ※ 修改:.rollback 于 Oct 21 07:18:07 修改本文.[FROM: 202.96.190.124] ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.124]
|
|