我有一个存储过程,可以在表中插入记录,同时删除所有超过20分钟的记录。
我已经尝试对其进行优化,并且已经看到删除操作的成本太高了。所以,我决定在执行删除操作的插入触发器之后创建。
看起来它现在运行得更快,但执行计划显示了触发器中的“delete”语句 - 唯一的区别是现在delete语句具有“查询成本(相对于批处理):0%”。 “
我的问题是,当程序插入记录时,它会立即返回结果还是等待后插入触发器完成?
答案 0 :(得分:2)
触发器是与调用过程相同的事务的一部分,因此整个事务只有在触发器触发后才会完成,来自MSDN:
触发器和触发它的语句被视为单个事务,可以从触发器中回滚。如果检测到严重错误(例如,磁盘空间不足),整个事务将自动回滚。