合并语句和目标表上的触发器之后 [英] Merge statement and after triggers on target table

查看:95
本文介绍了合并语句和目标表上的触发器之后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在目标表上有两个触发器(一个用于插入,一个用于更新). 现在,如果我在目标表上执行合并,则触发器仅执行一次.尽管merge语句执行大约300次更新和200次插入.

I have two after triggers on target table (one for insert and one for update). Now if I execute merge on the target table, the triggers are executed only once. Although the merge statement executes around 300 updates, and 200 inserts.

在删除触发器中的数据并将变量插入到记录中之后,我立即在每个触发器中使用打印语句对其进行了检查.

I checked it with print statements in each trigger, right after getting data from deleted, inserted record into variables.

为什么?这是一个错误吗?

How come? Is this a bug?

我有SQL Server 2008 sp1 std(SBS2k8的一部分).

I have SQL Server 2008 sp1 std (part of the SBS2k8).

推荐答案

每个动作都会触发一个触发器.不是每行"

A trigger runs per single action. Not "per row"

您需要插入200行,而一次更新则需要300行.

You have one insert of 200 rows and one update for 300 rows.

因此,如果要进行插入和更新,则触发器运行一次,或者单独的触发器分别运行一次

So, the trigger runs once if for insert and update, or the separate triggers run once each

  • From MSDN, "Multirow Considerations for DML Triggers"
  • From Brent Ozar, "Triggers Need to Handle Multiple Records"

这篇关于合并语句和目标表上的触发器之后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆