2012-01-11 5 views
7

Oracleトリガーは非常に新しいです。テーブルempの挿入にトリガがあるとします。引き金を引いた挿入されたレコードが何であるかを調べる方法はありますか?私は、挿入されたレコードが特定の値だった場合、何かをするコードをトリガーに持たせたいと思っていました。Oracleトリガーを起動した値を取得する

答えて

10

、あなたは、単にDDLトリガーの: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; 

を使用することができ、このアプローチは完全に異なっています。この場合、擬似関数ora_dict_obj_ownerおよびora_dict_obj_nameは、DDL文が操作されている表の所有者および名前を戻します。

+0

Hey @Justin Caveはお悔やみ申し訳ありませんが、DDLまたはSYstemトリガーが必要で、DMLトリガーは実際には必要です。新しいテーブルがスキーマで作成されるたびにトリガーを呼び出すでしょう。 'CREATE OR REPLACE TRIGGER after_trigger after hr.SCHEMA BEGIN END;'トリガーを起動したテーブルの名前はどうしたら取得できますか?それはまだ新しいですか? – Eosphorus

+0

@燐 - いいえ、DDLトリガーは非常に異なる動物です。私の答えを更新しました。 –

+0

ありがとう、ジャスティン。これはあなたが今私を助けてくれたかなりの回数です。ほんとうにありがとう :) – Eosphorus

関連する問題