2012-01-11 162 views
7

Oracle觸發器非常新。假設我在表emp中有一個插入觸發器。有沒有辦法找出觸發觸發器的插入記錄是什麼。如果插入的記錄是特定的值,我希望觸發器具有執行某些操作的代碼。獲取觸發Oracle觸發器的值

回答

10

假設你有一個行級觸發器,你可以簡單地使用:NEW僞記錄

CREATE TRIGGER name_of_trigger 
    BEFORE INSERT ON emp 
    FOR EACH ROW 
DECLARE 
    <<declare variables>> 
BEGIN 
    IF(:new.ename = 'JUSTIN') 
    THEN 
    <<do something if the newly inserted ENAME value is 'JUSTIN'>> 
    END IF; 
END; 

對於DDL觸發器,這種方法是完全不同的。在這種情況下,僞函數ora_dict_obj_owner和ora_dict_obj_name將返回DDL語句操作的表的所有者和名稱。

+0

嘿@Justin Cave抱歉打擾你,但我意識到我實際上需要一個DDL或系統觸發器,而不是一個DML觸發器。每次在模式中創建一個新表時,我都會調用觸發器CREATE OR REPLACE TRIGGER drop_trigger AFTER CREATE ON hr.SCHEMA BEGIN END;'我將如何獲取現在觸發觸發器的表的名稱?它還是新的? – Eosphorus 2012-01-11 22:03:35

+0

@Eosphorus - 不,DDL觸發器是非常不同的動物。更新了我的答案。 – 2012-01-11 22:25:02

+0

非常感謝賈斯汀。這是你現在幫助我的很多次。對此,我真的非常感激 :) – Eosphorus 2012-01-11 22:55:20