这个问题与 SQL Server 2005 非常相似:T-SQL to temporary disable a trigger
但是,我不想禁用所有触发器,甚至不想禁用一批命令,而只想禁用一个 INSERT。
我必须处理原始作者将一些应用程序逻辑放入触发器的商店系统(坏主意!)。只要您不尝试以不同于原始“管理前端”的方式插入数据,该应用程序逻辑就可以正常工作。我的工作是编写一个“从暂存系统导入”工具,所以我已经准备好所有数据。当我尝试插入它时,触发器会用生成的产品代码(不是 IDENTITY 数字 ID!)覆盖现有的产品代码。为了生成代码,它使用自动生成的插入到另一个表的 ID,因此我什至无法使用 @@IDENTITY 来查找我刚刚插入的列并使用实际的产品代码更新插入的行。
我可以采取任何方式来避免极其尴尬的代码(在产品名称中插入一些随机字符,然后尝试找到带有随机字符的行来更新它)。
那么:有没有办法为一个INSERT 禁用触发器(甚至只是一个)?