使用包含ROLLBACK TRANSACTION的触发器
来源:岁月联盟
时间:2007-10-24
当包含 ROLLBACK TRANSACTION 语句的触发器从批处理中执行时,它们会取消整个批处理。在下面的示例中,如果 INSERT 语句引发了包含 ROLLBACK TRANSACTION 的触发器,则由于批处理被取消,DELETE 语句没有执行:
/* Start of Batch */INSERT employee VALUES ('XYZ12345M', 'New', 'M', 'Employee', 1, 1, '9952', '6/1/95') -- Causes trigger to fire and ROLLBACK TRANSACTION.DELETE employee WHERE emp_id = 'PMA42628M'GO |
如果包含 ROLLBACK TRANSACTION 语句的触发器从用户定义的事务中引发,则 ROLLBACK TRANSACTION 回滚整个事务。在本示例中,如果 INSERT 语句引发了包含 ROLLBACK TRANSACTION 的触发器,UPDATE 语句同样被回滚:
/* Start of Transaction */BEGIN TRANSACTIONUPDATE employee SET hire_date = '7/1/94' WHERE emp_id = 'VPA30890F'INSERT employee VALUES ('XYZ12345M', 'New', 'M', 'Employee', 1, 1, '9952', '6/1/95') -- Causes trigger to fire and ROLLBACK TRANSACTION |