在SQL Server中插入更新删除触发器

时间:2012-10-21 03:28:03

标签: c# sql-server-2008 triggers

我有一个Windows申请表。该表称为messages,每当用户插入更新或删除消息时,日期/时间戳都存储在UserAction列中。

应检索此列信息并将其作为链接显示在UI中。单击该链接有一个操作,该链接应被视为已读。

有人可以帮助我提出一些想法来实现这一行动吗?

提前致谢。

3 个答案:

答案 0 :(得分:0)

我不确定如何从数据库触发事件并在UI中显示详细信息,但我认为以下是可行的:

  1. 在表格中添加INSERT/DELETE个触发器,并在UserAction表格中插入数据。
  2. 构建一个从UserAction读取数据并显示在UI中的用户界面。
  3. 您可能希望刷新UI以特定间隔刷新数据库UserAction中的数据。
  4. 这样,您将按特定时间间隔轮询任何更改UserAction,并使用刷新的数据刷新页面。

答案 1 :(得分:0)

您可以使用Query Notifications,但可以监控的内容有一些限制。

  

SQL Server 2005引入了查询通知,这是一项新功能,允许应用程序在查询结果发生变化时从SQL Server请求通知。查询通知允许程序员设计仅在应用程序先前检索到的信息发生更改时才查询数据库的应用程序。

此功能通过SqlDependency类公开。您应该查看备注部分,作为评估查询通知是否适合您的一部分:

  

SqlDependency旨在用于ASP.NET或中间层服务,其中存在相对较少数量的服务器,这些服务器具有对数据库的活动依赖性。它不是设计用于客户端应用程序,其中数百或数千台客户端计算机将为单个数据库服务器设置SqlDependency个对象。如果您正在开发一个在数据更改时需要可靠的亚秒级通知的应用程序,请查看规划高效查询通知策略和查询通知的替代方法部分>在SQL Server联机丛书中规划通知主题。

答案 2 :(得分:0)

您可以尝试这样的事情:

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中做什么......