我有程式A連接到MySQL資料庫,假如表中有一欄位'Age'發生變化后.程式A有沒有辦法知道欄位age已經產生了變化?
uj5u.com熱心網友回復:
發生了什么變化?用觸發器?uj5u.com熱心網友回復:
有具體的實體嗎,就是說某一欄位的值產生變化后,程式A能及時知道這個變化.uj5u.com熱心網友回復:
SQL Server有xp_cmdshell,可以執行外部程式。而觸發器可以及時知道欄位的值變化,可以在觸發器中再啟動程式A(這時就有程式A的兩個行程了),并指定一個命令列引數,后啟動的程式A檢測到這個引數,可以向先前已存在的程式A發送一個自定義訊息然后馬上退出(只剩一個行程了),先前的程式A回應訊息即可及時知道變化了。
但MySQL不知道有沒有對應的函式能啟動行程的。
uj5u.com熱心網友回復:
如果是這樣那就太麻煩了..uj5u.com熱心網友回復:
實作起來很簡單的。只是怕MySQL沒有啟動行程的函式。
uj5u.com熱心網友回復:
這個你只有知道讀出來比較了。讓資料庫通知你他的某個值變化了反而比較麻煩。uj5u.com熱心網友回復:
可能要用觸發器和SOCKET配合才行,觸發器把事件訊息發出去,A程式通過SOCKET接受,一旦有訊息,就做出處理。
uj5u.com熱心網友回復:
你的應用場景是什么?為什么要資料庫通知你的程式資料變化了。你的程式重繪一下就可以?
uj5u.com熱心網友回復:
定時檢測,或者用觸發器來呼叫外部程式uj5u.com熱心網友回復:
我也只會一些基本操作,不過正在深入學習中uj5u.com熱心網友回復:
用MyDac控制元件,好像里面有觸發器uj5u.com熱心網友回復:
1、觸發器配合。就是說AGE變化時觸發一另外一張表或者狀態改變之類的。總之能確定Age有變化就行。2、使用程式A定時去掃描這個變化,如果實時性要求不高的話可以放寬時間,如果要求較高,建議時間不能低于10秒鐘。
推薦使用另外一張表來記錄變化,可以監控多張表的變化。
uj5u.com熱心網友回復:
我覺得這個應該和Socket有關。。。攔截下來如果是修改操作。然后再判斷。具體代碼我也寫不出來,uj5u.com熱心網友回復:
有一點還沒弄明白:是誰在操控資料庫?1. 你自己的程式獨自操控。
2. 和別人的程式共同操控,但可以相互協商。
3. 是別人在操控,而且無法溝通。
若是第一種情況,那這個問題就不存在了,每次寫資料庫自然知道一切。第二種情況,可以寫一個公共介面,問題也不存在。是第三種情況嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/146404.html
標籤:數據庫相關
