2012-10-21 38 views
-2

我有一個Windows應用程序窗體。該表被稱爲messages,並且無論何時用戶插入更新或刪除消息,日期/時間戳都存儲在列UserAction中。在SQL Server中插入更新刪除觸發器

應該檢索此列信息並將其作爲鏈接顯示在UI中。點擊該鏈接有一個動作,鏈接應該被視爲已讀。

有人可以幫助我提供一些想法來實現這一行動嗎?

在此先感謝。

回答

0

我不知道如何可以觸發來自數據庫的事件,並在UI中顯示的細節,但我認爲以下是可行的:

  1. 添加INSERT/DELETE觸發你的表的代碼UserAction插入數據表。
  2. 構建一個從UserAction讀取數據並顯示在UI中的UI。
  3. 您可能需要刷新您的UI以按一定的時間間隔刷新數據庫UserAction中的數據。

這樣,您的UI將以特定間隔輪詢UserAction的任何更改並使用刷新的數據刷新頁面。

0

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

SQL Server 2005引入了查詢通知,該新功能允許應用程序在查詢結果發生更改時向SQL Server請求通知。查詢通知允許程序員設計僅在應用程序以前檢索到的信息發生變化時才查詢數據庫的應用程序。

該功能通過SqlDependency類公開。你應該檢討備註部分爲評估是否查詢通知的一部分,是你:

SqlDependency被設計在ASP.NET或中間層服務中使用不存在具有相對少量的服務器依賴於數據庫的活動。它不適用於客戶端應用程序,其中數百或數千臺客戶端計算機將爲單個數據庫服務器設置SqlDependency對象。如果你正在開發你需要可靠的分次通知時數據的變化,審查規劃的高效查詢通知策略和替代查詢通知規劃在SQL Server聯機叢書通知主題的章節的應用程序。

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做什麼...