2015-11-02 63 views
1

我有一些额外的(存档)数据处理需要在来自ASP.net web应用程序的SQL Server Update调用中发生。触发器异步(在SQL Server 2008 R2的asp.net命令对象上)

我想从调用SQL更新命令的网络线程(使用SQL Server 2008 R2的命令对象调用(不是异步))运行独立。

我已阅读的所有文档似乎表明,SQL Server触发器不会异步运行,这意味着我的Web线程将等待更新以及触发器完成执行。任何人都可以确认吗?想在我为我的档案sql命令实现一个独立的异步调用之前想知道。

+1

哪个RDBMS适用于?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –

+0

感谢您的建议/问题。我已经添加了相关信息。请您详细说明一下,如果您知道不同的RDBMS在这种特定情况下的表现有何不同? – DaniDev

回答

2

触发器在相同的上下文中运行以及与触发触发器的SQL操作相同的事务,例如,在与您的UPDATE声明相同的上下文和交易中。事务(以及来自ASP.NET代码的调用)在触发器执行之前不会终止。这是为什么触发器应该谨慎使用的主要原因之一,如果使用,触发器必须非常小,灵活和快速 - 做不是做触发器的任何繁重的处理和外部呼叫!

2

触发器是事务的一部分,最终调用触发器。如果你想在事务之外发生某些事情,你可能需要填充一个表示记录未被归档的字段(archivestatus,默认值为0),然后运行一个每隔多久运行一次的作业(时间取决于你记录了多少条记录需要处理以及需要多久数据存档)分钟,这些分钟存档尚未存档的记录,然后更新该字段。如果记录发生变化,YOu可能还需要一个触发器来将记录表格更新为未归档状态。