我打算在我的网站上审核/记录少量事件(如添加/更新/删除少量表格)。我打算添加数据库触发器,我认为审计表可能有很多数据,并且在该表中插入行可能需要更多时间。 我的问题是,触发器将运行异步或是否需要在前端调用返回之前完成?数据库触发器,它是异步?
感谢
我打算在我的网站上审核/记录少量事件(如添加/更新/删除少量表格)。我打算添加数据库触发器,我认为审计表可能有很多数据,并且在该表中插入行可能需要更多时间。 我的问题是,触发器将运行异步或是否需要在前端调用返回之前完成?数据库触发器,它是异步?
感谢
几乎可以肯定,因为,否则,你就吹原子整点离开,他们将是同步的(变化可能给表进行原子则触发可能会失败,这意味着审计线索是无用的)。
我不是说异步触发器是不可能的,但我看不到它们对您有任何用处。
如果您担心桌子变大,还有其他方法可以解决这个问题。一个是分区(例如基于日期),或者如果不可用,则将审计行定期传输到基于日期的归档表,然后在主表中删除它们。
这样,主表只保存最近N
个月的数据,其他所有数据都存储在别处。
ŧ索具是总是同步。它们作为交易的一部分运行,无论是明确的(使用BEGIN TRAN
)还是隐含的(使用INSERT等)。
在大多数应用程序中,日志记录和审计是强制性的:如果在触发器中写入日志或历史记录表失败,则父INSERT等失败。
触发器只需要在与循环编码错误,或发送电子邮件,或调用MS Word Spell Checker或calling web services
INSTEAD OF触发器,您还可以使用很长一段时间Change Data Capture
[异步触发器在SQL的
可能重复Server 2005/2008](http://stackoverflow.com/questions/766761/asynchronous-triggers-in-sql-server-2005-2008) –
耶几乎!!!! – Tippu
_几乎是一个愚蠢的但不完全。另一个问是询问如何使触发器异步,这是询问触发器是同步还是异步。虽然_answers_会有很多交叉,但我从来不会考虑一个问题,除非它是另一个问题的适当子集(即,_question_必须相同)。只是我的$ .02。 – paxdiablo