【发布时间】:2014-01-18 06:15:07
【问题描述】:
我有一个实例,我们有一个主记录和几个相关的表。在这种情况下,我们将所有历史记录保存在相关表中。所以在这种情况下它看起来像这样
Main Table - Visits
ID
Date
CurrentRoomHistoryID
CurrentStatusHistoryID
Related Table - RoomHistory
ID
Name
StartDate
EndDate
Related Table - StatusHistory
ID
StatusID
StartDate
EndDate
为了速度,您可以看到我们将当前房间的 ID 和历史记录保留在主表中。现在,当任何一个更新时,我都会为之前的房间或状态记录设置结束日期,然后更新主表。
使用TRIGGER 将结束日期添加到上一条记录并更新主表会更快更高效吗?
【问题讨论】:
-
“更高效”——比什么?
-
比从应用程序运行单独的查询来更新主表以及状态和房间历史表中的相关记录。
-
更重要的是:触发器将始终运行,因此更新历史记录的位置可能更正确
-
有点像问“一根绳子有多长?” - 您需要准确地告诉我们当前操作是如何工作的,以便我们可以将苹果与苹果进行比较。话虽如此,大多数 SQL 开发人员会尽量避免触发器。
-
如果要避免它们,我想我会尝试在其他地方挤压更多性能。
标签: sql sql-server triggers sql-server-2008-r2