我个人不会以这种方式处理这种情况。我不确切知道您的数据结构是什么,或者为什么您需要在 30 分钟内更改某些内容,但我会使用“更改”表。
所以你可能有类似的东西
MainTable(ID、Column1、Column2、Column3、Column4);
ChangeTable(ID、Column1、Column2、Column3、Column4、CreatedDateTime);
每当您进行更改而不是更新主表时,您只需将要更新的值插入到 ChangeTable 中(我假设 SQL-Server 基于WAITFOR
)。
然后我会做出这样的看法:
CREATE VIEW dbo.MainView
AS
SELECT m.ID,
Column1 = ISNULL(c.Column1, m.Column1),
Column2 = ISNULL(c.Column2, m.Column2),
Column3 = ISNULL(c.Column3, m.Column3)
FROM dbo.MainTable m
OUTER APPLY
( SELECT TOP 1 c.Column1, c.Column2, c.Column3
FROM dbo.ChangeTable c
WHERE c.ID = m.ID
AND c.CreatedDate >= DATEADD(MINUTE, -30, GETDATE())
ORDER BY c.CreatedDate DESC
) c;
然后在整个网站上参考这个。
如果空间是一个问题,您可以设置一个夜间作业来删除任何旧条目,例如将以下设置为在 00:30 运行
DELETE ChangeTable
WHERE CreatedDate < CAST(GETDATE() AS DATE);