我在一个表上有一个"而不是插入"触发器来生成自定义的唯一代码,并在同一表上通过存储过程插入批量数据,但有些错误如下:
MERGE语句的目标"xyz"对MERGE语句中指定的某些操作(但不是全部操作(具有INSTEAD of触发器。在MERGE语句中,如果任何操作在目标上都启用了INSTEAD OF触发器,那么所有操作都必须启用了INSTEAD OF触发器
如有任何意见或评论,我们将不胜感激。
错误消息非常清楚-使用merge
时,instead of
触发器必须应用于merge
语句可能执行的所有操作或不执行任何操作。
如果您的merge
在不匹配时有一个insert
,在匹配时有update
,则目标表必须有instead of insert
和instead of update
触发器,或者没有触发器。
这在微软文档的merge
页面中也有很好的记录,标题为触发器实现:
如果目标表上为MERGE语句执行的插入、更新或删除操作定义了启用的INSTEAD OF触发器,则它必须为MERGE声明中指定的所有操作启用INSTEAD OF触发器。