我可以在这种情况下使用触发器吗?

时间:2009-07-23 02:05:33

标签: sql-server-2008 triggers

我有一个表(即ReportData),其中包含一些计算数据 - >例如。课堂平均分数,学生人数,平均分等等。大量的报告就像数据一样。效果很好。

现在,在我的一些其他表(例如ClassRoom表)中,如果我在那里更改了一些数据,我需要更新ReportData表。

所以我认为如果我在ClassRoom表上执行任何INSERT,UPDATE或DELETE,那么我可以运行更新ReportData表数据的存储过程。

所以我认为触发器对此有好处。但是,我不确定。为什么?那么,用于执行所有自定义数学运算的存储过程实际上偶尔会查询ClassRoom表。那么它会访问最新的(例如更改的)数据吗?

例如。如果我从4 - >更改字段'NumberOfStudents' 5.存储过程(最终将在ClassRoom表上检查该字段,检索4或5作为数据吗?

谢谢:)

注意:为了讨论的目的,ClassRooms等只是假的。

2 个答案:

答案 0 :(得分:1)

交易规则是您始终可以看到拥有对数据的更改。

答案 1 :(得分:0)

也许我对你的问题有一些误解,但是SQL Server 2008有两种类型的触发器:AFTER(在应用更改后触发)和INSTEAD OF(你可以在更改应用的表之前做你想做的事) 。 如果要更新ClassRoom表,然后使用新值重新计算ReportData表 - 只需使用AFTER触发器。