2014-09-29 55 views
0

我正在建立一個C#Winforms客戶端連接到一個MySQL數據庫。客戶端可以從多個用戶和計算機訪問。我需要一種方式讓所有客戶端在不知何故被通知時,只要另一個客戶端對數據庫內容進行更改,以便在客戶端進行刷新。如何從客戶端知道表是否已更新

由於用戶打開顯示數據庫內容的表單時,會在運行時提取內容。所以這不是問題。如果更新完成,用戶將看到它。
我的問題是,如果用戶有一種數據庫內容的形式打開,另一個用戶更改數據庫內容。

我想過設置某種計時器,每分鐘都會獲取用戶當前正在查看的所有數據庫內容。但是這非常耗時而且效率不高。 另一個想法是每分鐘檢查更新,但我不知道如何實現這一點。

有什麼建議嗎?

有沒有辦法從客戶端獲取檢查更新?
是否有任何其他方式來執行此操作?

+0

可能重複[如何知道MySQL表最後更新時間?](http://stackoverflow.com/questions/307438/how-can-i-tell-when-a-mysql-table-was -last-updated) – Kami 2014-09-29 08:46:43

+0

@Kami我真的搜索過這個答案並沒有出現在搜索結果中......我會測試它,看看它是否有效 – 2014-09-29 08:50:08

+0

鏈接的問題可能會幫助您確定一個表是否發生了變化,在單行上看起來是不可能的。 – Kami 2014-09-29 08:53:18

回答

0

您可以更改您的表格,以便在更新時存儲時間戳。 例如

CREATE TABLE foo (
    id INT PRIMARY KEY 
    x INT, 
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
        ON UPDATE CURRENT_TIMESTAMP, 
    KEY (updated_at) 
); 

上面的代碼存儲當前時間戳到一個新的行和改變它,每當一列被編輯的時間進行編輯。通過這種方式,您可以獲取數據,並在descending模式下對其進行排序(order by)並獲得最高記錄。這樣你就可以得到表格中的最新更新記錄。 如果您想知道整個數據庫,那麼您必須比較每個表的最新更新記錄並獲取最新的記錄。

相關問題