2016-11-08 24 views
0

我正在編寫Java Web應用程序。我正在使用Spring DATA和Oracle。我想要的是,桌子在午夜每天都會自動清洗。我知道,有「TRUNCATE TABLE table_name」,但我想聲明一些類似於自動清理的過程。那可能嗎?在oracle中自動清理表格

- 編輯 - 編輯

更多信息...這是每天寫日記的應用程序,像noty。這就是爲什麼我會刪除表中的所有行。所以truncate是一個好方法?

+0

您可以創建一個具有截斷程序,然後使用'dbms_scheduler'包調度,在午夜截斷表的工作。雖然這似乎是一個相當古怪的建築選擇。如果這確實是暫時的數據,你確定你不想使用臨時表或其他構造和/或更有選擇地清除數據以響應其他事件? –

+0

您可能想要檢查間隔分區以刪除較舊的數據。對於大數量的記錄來說,DELETE是醜陋的,如果當時有打開的事務,TRUNCATE將失敗... –

+0

夥計們,更新第一篇文章,關於應用程序。如果你有更好的辦法,請告訴我。 – aASD

回答

1

你可以用DBMS_Scheduler設置一些東西,但是我會盡量避免依賴於Truncate,除非你知道在午夜到幾分鐘之間有一個清晰的窗口,當它保證不會添加新行時,或者你也會失去他們。

它的安全運行是這樣的:

delete from my_table where created_at < trunc(sysdate); 
+0

我想要超過幾分鐘。在計劃時,工作並不總是正確運行。並考慮如果數據庫在午夜停機(或作業被禁用)以進行修補/升級/代碼推送會發生什麼情況,因此一旦數據庫重新啓動/重新啓用作業,作業將在凌晨3點或凌晨4點運行。 –

+0

@JustinCave是的,好點。整個事情是非常不推薦的。 –

+0

夥計們,更新第一篇文章,關於應用程序的東西。如果你有更好的辦法,請告訴我。 – aASD