使用触发器在 SQL 中维护摘要 table
Using triggers to maintain a summary table in SQL
我有一个关于在 SQL 服务器中使用触发器的查询。
我在 SQL 服务器中有一个 MAIN table,它链接到 MS Access 前端。多个用户全天更新其中的一些列,如 Expected_date 和 User_Comment。我想知道我是否可以在 MAIN table 上使用触发器来更新 USER_SUMMARY table 这基本上是用户的列表,其中包含有多少记录已更新日期,有多少没有日期等:。
所以我的问题是,每次更新记录中的列时,我可以通过触发器调用存储过程吗?这比设置按钮 运行 MS Access 的存储过程来更新摘要 table 更好吗?我认为使用触发器会更加实时和简化。
请告知如何进行。
我会避免触发,这将是一项开销。我不知道您使用的是哪个版本的 sql 服务器,但如果它支持作业,我会在作业中调用该存储过程。此外,在您的存储过程中使用 NOLOCK,这样它就不会影响性能。
使用 VIEW 是理想的解决方案。
触发器更难维护,因为它需要特别小心。
- 如果加载批量数据怎么办?您的触发器应该可以处理这个问题。
- 数据更新了怎么办?然后你需要为 INSERT andUPDATE 编写你的触发器,那么 DELETE 呢?
- 如果您的触发器发生某些事情,您的触发器是否应该阻止 insert/update/delete?如果不是,您如何保持一致性?
如果它需要过多的计算并减慢您的服务器速度,那么使用作业来计算最新摘要是 IMO 的第二个最佳选择。
在 Access 中放置一个按钮来更新摘要不是一个好的选择,因为许多用户可以同时按下按钮。
我有一个关于在 SQL 服务器中使用触发器的查询。
我在 SQL 服务器中有一个 MAIN table,它链接到 MS Access 前端。多个用户全天更新其中的一些列,如 Expected_date 和 User_Comment。我想知道我是否可以在 MAIN table 上使用触发器来更新 USER_SUMMARY table 这基本上是用户的列表,其中包含有多少记录已更新日期,有多少没有日期等:。
所以我的问题是,每次更新记录中的列时,我可以通过触发器调用存储过程吗?这比设置按钮 运行 MS Access 的存储过程来更新摘要 table 更好吗?我认为使用触发器会更加实时和简化。
请告知如何进行。
我会避免触发,这将是一项开销。我不知道您使用的是哪个版本的 sql 服务器,但如果它支持作业,我会在作业中调用该存储过程。此外,在您的存储过程中使用 NOLOCK,这样它就不会影响性能。
使用 VIEW 是理想的解决方案。
触发器更难维护,因为它需要特别小心。
- 如果加载批量数据怎么办?您的触发器应该可以处理这个问题。
- 数据更新了怎么办?然后你需要为 INSERT andUPDATE 编写你的触发器,那么 DELETE 呢?
- 如果您的触发器发生某些事情,您的触发器是否应该阻止 insert/update/delete?如果不是,您如何保持一致性?
如果它需要过多的计算并减慢您的服务器速度,那么使用作业来计算最新摘要是 IMO 的第二个最佳选择。
在 Access 中放置一个按钮来更新摘要不是一个好的选择,因为许多用户可以同时按下按钮。