在我的項目中,我需要運行一個cron作業 - 它將在午夜查詢Table並從所選行中創建數據對象。如何在Oracle中查詢更新或新行
這張表的大小會隨着時間的推移而增長 - 因此意圖是僅查詢(選擇) - 自上次運行以來已更新的新行或那些行。
在oracle中有沒有辦法做到這一點。
問候
在我的項目中,我需要運行一個cron作業 - 它將在午夜查詢Table並從所選行中創建數據對象。如何在Oracle中查詢更新或新行
這張表的大小會隨着時間的推移而增長 - 因此意圖是僅查詢(選擇) - 自上次運行以來已更新的新行或那些行。
在oracle中有沒有辦法做到這一點。
問候
一個想法是有一個標誌,當行已被處理時設置爲TRUE表。然後,可以使該過程僅在未處理(FALSE)行上運行,而不管日期(由於某種原因午夜運行失敗)。
oracle system change number應該可以幫到你。在您的工具的設置一次,之後每一個批處理運行的今後
create table support_table (
m_pk master_table.master_pk%TYPE
, supp_scn NUMBER
);
飼料與即將在主表中記錄的最後一次更改信息的支持表: 連同支撐臺,用它:
delete
from support_table
;
insert
into support_table (m_pk, supp_scn)
select master_pk
, ORA_ROWSCN
from master_table
;
檢查哪些行發生了變化:
select m.master_pk
, ORA_ROWSCN scn
from master_table m
left join support_table supp ON (supp.m_pk = mthen.master_pk)
where supp.m_pk IS NULL
OR supp.supp_scn <> m.master_pk
;
該結果集將包含master_pk
s已更改的記錄和自上次檢查後添加的記錄。
您的表格是否有時間戳字段,顯示上次更新的時間;如果不是,可以添加嗎? –