【发布时间】:2016-08-21 11:17:45
【问题描述】:
我在表 (AFTER INSERT, UPDATE) 上有一个触发器,该触发器用于根据已添加或更新到表中的内容计算值,并将它们存储在单独的表中。
我已经阅读了很多关于触发器内部错误处理的内容,并且我的触发器逻辑中的错误将ROLLBACK 最初调用触发器的原始事务。
为了不惜一切代价保留原始交易(假设在某些时候,触发器可能会失败),我通过执行类似的操作开始我的代码;
-- Grab newly inserted data
SELECT *
INTO #Temp
FROM INSERTED
-- Force transaction to finish, making sure following statements don't roll it back
COMMIT TRAN
-- Continue using data stored in #Temp
UPDATE .....
SET .....
FROM #Temp
这有效,即使我在触发逻辑中故意放置错误,问题是这样安全吗?
【问题讨论】:
标签: sql-server tsql triggers