CREATE TRIGGER TestTrig ON TestTab FOR UPDATE AS
BEGIN TRANSACTION
INSERT INTO TrigTarget
SELECT * FROM inserted
COMMIT TRANSACTION
ROLLBACK TRANSACTION
1:将回滚对当前事务中的那一点所做的所有数据修改,包括触发器所做的修改。
2:触发器继续执行 ROLLBACK 语句之后的所有其余语句。如果这些语句中的任意语句修改数据,则不回滚这些修改。执行其余的语句不会激发嵌套触发器。
3:在批处理中,不执行所有位于激发触发器的语句之后的语句。
例如:
CREATE TRIGGER TestTrig ON TestTab FOR UPDATE AS
SAVE TRANSACTION MyName
INSERT INTO TestAudit
SELECT * FROM inserted
IF (@@error <> 0)
BEGIN
ROLLBACK TRANSACTION MyName (回到你那个保存点的操作.就是说它以后的操作都取消)
END
事务回滚Transaction Rollback 是指当事务中的某一语句执行失败时将对数据库
的操作恢复到事务执行前或某个指定位置.
如:
begin transaction my_transaction_delete
use pangu
go
delete from department
where dept_id = ’1012’
update employee
set dept_id = ’1001’
where dept_id = ’1012’
if @@error!=0 or @@rowcount=0 then
begin
rollback tran after_delete /* 回滚到保存点after_deletereturn,如果使用rollback my_transaction_delete 则会回滚到事务开始前 */
commit tran
print ‘更新员工信息表时产生错误’
return
end
commit transaction my_transaction_delete
go