2013-03-20 37 views
1

我已創建基本審計表,以便如果他們插入,更新,刪除或更改「僱員」表,時間,用戶和行爲是存儲在「審計員工」表中。Oracle PL/SQL觸發器僅在9-5小時後對數據進行更改時纔會運行

我只是想知道是否有可能讓觸發器只會在'員工'表上發生的變化是在下午5點到7點之後觸發?

有沒有人有任何想法這可能會使用SYSDATE?

謝謝

+2

審計跟蹤的值不跟蹤*每個* chnage對錶所做的審計跟蹤的值是什麼? – APC 2013-03-20 21:48:53

+5

@APC - 顯然只有壞人所做的更改需要審覈。而且,衆所周知,壞人只能在下午5點和上午7點之間工作。只有*好人*從早上7點到下午5點工作。你不需要擔心好人做什麼,因爲他們是,你知道,好人。審計好人的行爲時,沒有用處堵塞審計線索。它只是浪費磁盤空間。擔心壞人,好人會照顧好自己。分享並享受。 – 2013-03-21 02:41:41

+0

也許他們正在執行一個適合家庭的工作環境。 「您將在下午5點停止工作,或者遭受友好人力資源部門的電話」 – 2013-03-27 07:53:54

回答

3

您無法控制觸發器是否會基於一天中的時間觸發。但是,您可以將邏輯添加到觸發器,以便您只在特定的時間段內將數據插入歷史記錄表中。類似於

IF(to_number(to_char(sysdate, 'hh24')) >= 17 or 
    to_number(to_char(sysdate, 'hh24')) < 7) 
THEN 
    INSERT INTO employee_history... 
END IF; 
+0

'IF mod(to_char(sysdate,'hh24')+ 7,24)<14 THEN ...' – 2013-03-20 21:59:13

+1

如果提取(小時來自sysdate )不在7到17之間 – 2013-03-21 09:46:34