使用触发器在SQL中维护摘要表

时间:2015-12-04 23:26:26

标签: sql-server triggers ms-access-2010

我有一个与在SQL Server中使用触发器相关的查询。

我在SQL Server中有一个MAIN表,它链接到MS Access前端。多个用户全天更新其中的几列,如Expected_date和User_Comment。我想知道我是否可以在MAIN表上使用触发器来更新USER_SUMMARY表,其基本上是用户的数量,其中包括有多少记录已更新日期,有多少没有日期等等:

所以我的问题是,每当记录中的列更新时,我都可以通过触发器调用存储过程吗?这比设置一个按钮从MS Access运行存储过程更新摘要表更好吗?我认为使用触发器会更加实时和简化。

请告知如何继续。

2 个答案:

答案 0 :(得分:1)

我会避免触发,这将是一个开销。我不知道您使用的是哪个版本的sql server,但是如果它支持作业,我会在作业中调用该存储过程。此外,在存储过程中使用NOLOCK,因此它不会影响性能。

答案 1 :(得分:1)

使用VIEW是理想的解决方案。

由于需要特别小心,触发器更难以维护。

  • 如果你加载了BULK数据怎么办?你的触发器应该处理这个。
  • 如果数据更新怎么办?然后你需要为INSERT UPDATE编写触发器,那么DELETE呢?
  • 如果触发器中发生了某些事情,您的触发器是否应阻止插入/更新/删除?如果没有,你如何保持一致性?

如果它需要太多计算并且减慢了服务器的速度,那么使用作业计算最新摘要是IMO的第二个最佳选择。

在Access中添加按钮以更新摘要不是一个好选择,因为许多用户可以同时按下按钮。