【问题标题】:Getting Error :MERGE statement has an INSTEAD OF trigger on some, but not all, of the actions specified in the MERGE statement出现错误:MERGE 语句在 MERGE 语句中指定的某些(但不是全部)操作上具有 INSTEAD OF 触发器
【发布时间】:2018-12-03 09:59:53
【问题描述】:

我在表上有一个“而不是插入”触发器来生成自定义唯一代码,并在同一个表上通过存储过程插入批量数据,但有些如何得到如下错误:

MERGE 语句的目标“xyz”在 MERGE 语句中指定的部分(但不是全部)操作上具有 INSTEAD OF 触发器。在 MERGE 语句中,如果任何操作在目标上启用了 INSTEAD OF 触发器,则所有操作都必须启用 INSTEAD OF 触发器

对此的任何意见或评论将不胜感激。

【问题讨论】:

  • 错误在这里告诉你问题;这是 SQL Server 中描述性更强的错误之一。您不了解错误的哪一部分?您似乎没有在这里问过问题,只是说您想要输入或 cmets;你有什么问题?
  • @Larnu 为给您带来的不便深表歉意。实际上,我确实理解了合并语句,因为错误地在存储过程中找不到该语句。谢谢你的指正。

标签: sql-server stored-procedures triggers


【解决方案1】:

错误消息非常清楚 - 使用 merge 时,instead of 触发器必须应用于 merge 语句可能执行的所有操作或不应用任何操作。

如果您的merge 在不匹配时具有insert,在匹配时具有update,则目标表必须具有instead of insertinstead of update 触发器,或者都没有。

这在 Microsoft 文档的 merge 页面中也有详细记录,标题为 Trigger Implementation

如果目标表上为 MERGE 语句执行的插入、更新或删除操作定义了一个启用的 INSTEAD OF 触发器,那么它必须为 MERGE 语句中指定的所有操作启用一个 INSTEAD OF 触发器.

【讨论】:

  • 有趣的是(如果有人阅读上面的 MS 信息决定他们只想禁用触发器)然后看看以下内容,因为您可能需要在另一个 SP @987654322 中禁用它@
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多