相关疑难解决方法(0)

有没有办法只为特定的执行范围禁用SQL Server触发器?

在SQL Server 2005中,有没有办法让触发器找出哪个对象负责触发触发器?我想用它来禁用一个存储的prodecure的触发器.

有没有其他方法只为当前事务禁用触发器?我可以使用以下代码,但如果我没有弄错,它也会影响并发事务 - 这将是一件坏事.

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } ON { object_name | DATABASE | ALL SERVER } [ ; ]

ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } ON { object_name | DATABASE | ALL SERVER } [ ; ]
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想避免在我的表中使用"NoTrigger"字段并执行a的技术NoTrigger = null,因为我希望保持表尽可能小.

我想避免触发器的原因是因为它包含对表的手动更新很重要的逻辑,但我的存储过程将处理这个逻辑.因为这将是一个高度使用的程序,我希望它快.

触发器会在服务器上产生额外的开销,因为它们会启动隐式事务.一旦执行了触发器,就会启动一个新的隐式事务,并且事务中的任何数据检索都将保留受影响表的锁定.

来自:http://searchsqlserver.techtarget.com/tip/1,289483,sid87_gci1170220,00.html#trigger

t-sql sql-server triggers

36
推荐指数
2
解决办法
4万
查看次数

标签 统计

sql-server ×1

t-sql ×1

triggers ×1