3 回答

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
這聽起來像是預(yù)定工作中應(yīng)該發(fā)生的事情。我會在預(yù)訂中添加一個(gè)ready_for_archive列——只是一個(gè)布爾標(biāo)志。
我將有一個(gè)查詢標(biāo)記在指定日期/時(shí)間之前發(fā)生的所有預(yù)訂,并從 java 傳遞 2 天前的日期。就像是
UPDATE booking
SET ready_for_archive = 1
WHERE completed_dt <= :MY_START_DATE
然后我會將所有這些記錄添加到歷史表中
INSERT INTO booking_hist
SELECT * FROM booking
WHERE ready_for_archive = 1;
然后將它們從預(yù)訂表中刪除:
DELETE FROM booking
WHERE ready_for_archive = 1;
在執(zhí)行該過程之前標(biāo)記要存檔的記錄意味著不存在意外刪除因時(shí)間太短而無法復(fù)制的記錄的風(fēng)險(xiǎn)。
在Java中計(jì)算日期后傳入,使得sql查詢更加通用和可重用。

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
創(chuàng)建一個(gè)存儲過程以從一個(gè)表移動(dòng)到另一個(gè)表
如何用每日計(jì)劃的作業(yè)調(diào)用oracle中的存儲過程?
在 where 條件下添加 , trunc(sysdate) - to_date('completed_dt', 'yyyy-mm-dd') >2

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以安排 SQL 代理作業(yè)每天運(yùn)行并調(diào)用存儲過程來瀏覽活動(dòng)預(yù)訂并檢查 Completed_dt,如下所示:
-- add your insert here, e.g. INSERT INTO bookings_hist (...)
SELECT *
FROM booking b
LEFT JOIN booking_hist h
ON b.booking_id=h.booking_id
WHERE h.booking_id IS NULL
AND completed_dt IS NOT NULL
AND completed_dt<DATEADD(DAY,-2,GETDATE());
添加回答
舉報(bào)