我有一个 Windows 申请表。该表被调用messages
,每当用户插入更新或删除消息时,日期/时间戳都存储在列中UserAction
。
应检索此列信息并将其作为链接显示在 UI 中。单击该链接有一个动作,该链接应被视为已读。
有人可以帮我提出一些想法来实现这一行动吗?
提前致谢。
我有一个 Windows 申请表。该表被调用messages
,每当用户插入更新或删除消息时,日期/时间戳都存储在列中UserAction
。
应检索此列信息并将其作为链接显示在 UI 中。单击该链接有一个动作,该链接应被视为已读。
有人可以帮我提出一些想法来实现这一行动吗?
提前致谢。
你可以尝试这样的事情:
CREATE TRIGGER dbo.trMessagesUpdateTimeStamp
ON dbo.Messages
FOR INSERT, UPDATE, DELETE
AS
UDPATE dbo.Messages
SET UserAction = GETDATE()
FROM Inserted i
WHERE dbo.YourTableHere.ID = i.ID
检查点:
这种INSERT
情况可以更容易地通过列DEFAULT
上的约束来处理UserAction
- 这样,在INSERT
定义的默认值(例如GETDATE()
)上将被插入
您需要能够将Inserted
包含由最后一条语句修改的所有行(这可以是多行)的伪表与该Messages
表连接 - 我在这里假设您有某种ID
列用作主键打开Messages
- 根据需要进行调整。
这处理了故事的数据库部分 - 从你的问题中我不太确定你想在 UI 中做什么......
我不确定如何从数据库触发事件并在 UI 中显示详细信息,但我认为以下是可行的:
INSERT/DELETE
触发器以在表中插入数据UserAction
。UserAction
从UI
.UI
刷新数据库中的数据。UserAction
这样,您的 UI 将以UserAction
特定间隔轮询任何更改并使用刷新的数据刷新页面。
您可以使用Query Notifications,尽管可以监控的内容有一些限制。
SQL Server 2005 引入了查询通知,这是一种允许应用程序在查询结果发生变化时向 SQL Server 请求通知的新功能。查询通知允许程序员设计仅在应用程序先前检索的信息发生更改时才查询数据库的应用程序。
此功能通过SqlDependency
类公开。作为评估查询通知是否适合您的一部分,您应该查看备注部分:
SqlDependency
被设计用于 ASP.NET 或中间层服务,其中有相对少量的服务器对数据库具有活动的依赖关系。它不是为在客户端应用程序中使用而设计的,在客户端应用程序中,成百上千的客户端计算机将为SqlDependency
单个数据库服务器设置对象。如果您正在开发的应用程序在数据更改时需要可靠的亚秒级通知,请查看SQL Server 联机丛书中的“规划通知”主题中的规划有效的查询通知策略和查询通知的替代方案部分。