[英]Find out when AllData table column's was updated the last time
我是Oracle SQL的新手(最常與MS SQL,MySQL接觸),我試圖弄清楚如何每秒或每兩秒檢查一次數據庫,看看表列中的內容是否已更改。
我目前有這種類型的架構( AllData ):
ID | Script_name | Tester | DateLastMod | Tools
-------------------------------------------------
1 | Script_1 | Bob | 10-FEB-19 | Web
2 | Script_2 | Bob | 10-FEB-19 | Web
3 | Script_3 | David | 10-FEB-19 | Desktop
4 | Script_4 | Bill | 10-FEB-19 | Web
我發現與此查詢類似的東西:
SELECT * FROM all_tab_modifications WHERE TABLE_OWNER = 'ME';
Table_owner | Table_name | Inserts | Updates | Deletes | TimeStamp
------------------------------------------------------------------
Me | Alldata | null | 6 | 0 | 11-Feb-19
但是我不確定那是否是用於查看自上次檢查以來是否已更改Alldata表列的正確查詢?
大致的流程為:
用戶將ID 3- > Tester更改為Sean (日期為2月11日)。
ID | Script_name | Tester | DateLastMod | Tools ------------------------------------------------- 1 | Script_1 | Bob | 10-FEB-19 | Web 2 | Script_2 | Bob | 10-FEB-19 | Web 3 | Script_3 | Sean | 11-FEB-19 | Desktop 4 | Script_4 | Bill | 10-FEB-19 | Web
(檢查更新)
找到更新的表數據,以便刷新jTable中的數據。
(檢查更新)
ID | Script_name | Tester | DateLastMod | Tools ------------------------------------------------- 1 | Script_1 | Bob | 10-FEB-19 | Web 2 | Script_2 | Bob | 10-FEB-19 | Web 3 | Script_3 | Sean | 11-FEB-19 | Desktop 4 | Script_4 | Bill | 10-FEB-19 | Web
沒變。
(檢查更新)
ID | Script_name | Tester | DateLastMod | Tools ------------------------------------------------- 1 | Script_1 | Bob | 10-FEB-19 | Web 2 | Script_2 | Bob | 10-FEB-19 | Web 3 | Script_3 | Sean | 10-FEB-19 | Desktop 4 | Script_4 | Bill | 10-FEB-19 | Web
沒變。
用戶將ID 1- > Script_name更改為Script_11 (日期為2月11日)。
ID | Script_name | Tester | DateLastMod | Tools ------------------------------------------------- 1 | Script_11 | Bob | 11-FEB-19 | Web 2 | Script_2 | Bob | 10-FEB-19 | Web 3 | Script_3 | Sean | 11-FEB-19 | Desktop 4 | Script_4 | Bill | 10-FEB-19 | Web
(檢查更新)
找到更新的表數據,以便刷新jTable中的數據。
(檢查更新)
ID | Script_name | Tester | DateLastMod | Tools ------------------------------------------------- 1 | Script_11 | Bob | 11-FEB-19 | Web 2 | Script_2 | Bob | 10-FEB-19 | Web 3 | Script_3 | Sean | 11-FEB-19 | Desktop 4 | Script_4 | Bill | 10-FEB-19 | Web
沒變。
等等等等...
因此,我需要檢查的幾乎就是DataLastMod ,以查看先前的日期是否更改。 我還可以看到,我需要一個“ 日期+時間” ,以使其在同一天對多個更改正確無誤。
那么查詢是我找到了需要使用的內容還是其他適合我的問題的內容?
不,您不能為此使用all_tab_modifications
。 從文檔中 :
這些視圖僅針對具有MONITORING屬性的表填充。 它們旨在長時間收集統計信息。 出於性能原因,在實際修改發生時,Oracle數據庫不會立即填充這些視圖。
因此,您必須自己制定一些解決方案。 從我的頭頂上:
MAX(DateLastMod)
。 根據表的大小以及您需要檢查該表進行修改的次數,這可能對索引此列很有幫助。 解決方案1將序列化對表的更改,因此可能會對性能產生影響。
如果DateLastMod
實際上存儲為VARCHAR2
,而不僅僅是以DD-Mon-YY格式顯示,則應盡可能將其絕對更改為DATE
。 這將為數據添加時間成分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.