如何在不触发UPDATE触发器的情况下“更新” SQL Server表

aSy*_*oad 5 sql sql-server triggers

我有一个更新触发器,可以更新表中的一些重要状态字段tblCurrent
当我第一次将每日一批记录上载到tblCurrent(大约10K条记录)时,我会通过三个单独的存储过程执行一些UPDATE,而这些过程是在第一次上载时才执行的。如何防止在这三个初始UPDATE期间运行更新触发器?

Iva*_*iuk 5

您可以临时禁用该表的触发器,然后重新启用它们。MSDN文章

禁用触发{[schema_name。] trigger_name [,... n] | ALL} ON {object_name | 数据库| 所有服务器} [; ]

启用触发{[schema_name。] trigger_name [,... n] | ALL} ON {object_name | 数据库| 所有服务器} [; ]

例如,要禁用给定表的所有触发器,请运行以下语句:

DISABLE TRIGGER ALL ON tblCurrent;
Run Code Online (Sandbox Code Playgroud)

  • 但这会影响其他并发连接。这不是一个好主意。下面的文章有一些替代方法:http://www.mssqltips.com/sqlservertip/1591/disabling-a-trigger-for-a-specific-sql-statement-or-session/ (4认同)