Trigger Development Jp

Default Value Trigger

DECLARE
    E_IRREGULAR        EXCEPTION;
    -- Replace the default exception DUP_VAL_ON_INDEX
    PRAGMA EXCEPTION_INIT(E_IRREGULAR, -1); 
BEGIN
    IF (:NEW.ID IS NOT NULL) THEN
        RAISE E_IRREGULAR;
    END IF;
    SELECT ARTICLE_PK_SN.NEXTVAL INTO :NEW.ID FROM DUAL;
    -- the following syntax is available from 11g
    -- NEW.ID := ARTICLE_PK_SN.NEXTVAL; 
END;

システム・マネジャ・イベント

イベント  起動するタイミング  条件  制限事項  トランザクション  属性関数 
STARTUP データベースのオープン時  なし  トリガーではデータベース処理はできません。 トリガーの起動後、別のトランザクションを開始してこれをコミットします。  ora_sysevent
ora_login_user
戻り状態は無視されます。  ora_instance_num
ora_database_name
SHUTDOWN サーバーがインスタンス停止を開始する直前 なし  トリガーではデータベース処理はできません。 トリガーの起動後、別のトランザクションを開始してこれをコミットします。  ora_sysevent
ora_login_user
これによって、カートリッジを完全に停止できます。インスタンスの異常停止の場合は、このイベントは起動されない場合があります。  戻り状態は無視されます。  ora_instance_num
ora_database_name
DB_ROLE_CHANGE ロール変更後、初めてのデータベースのオープン時  なし  戻り状態は無視されます。  トリガーの起動後、別のトランザクションを開始してこれをコミットします。  ora_sysevent
ora_login_user
ora_instance_num
ora_database_name
SERVERERROR enoエラーの発生時条件が指定されない場合、このイベントは任意のエラーが発生したときに起動します。 ERRNO = eno  エラーに依存します。 トリガーの起動後、別のトランザクションを開始してこれをコミットします。  ora_sysevent
ora_login_user
ORA-1034、ORA-1403、ORA-1422、ORA-1423およびORA-4030の場合、トリガーは起動されません。本当のエラーでないか、または問題が深刻で処理を続行できないためです。また、ORA-18およびORA-20の場合もトリガーは起動されません。プロセスで、データベースに接続してエラーを記録することができないためです。  戻り状態は無視されます。  ora_instance_num
ora_database_name
ora_server_error
ora_is_servererror
space_error_info

クライアント・イベント

イベント  起動するタイミング  属性関数 
BEFORE ALTER カタログ・オブジェクトの変更時  ora_sysevent
ora_login_user
AFTER ALTER ora_instance_num
ora_database_name
ora_dict_obj_type
ora_dict_obj_name
ora_dict_obj_owner
ora_des_encrypted_password
(for ALTER USER events)
ora_is_alter_column
(for ALTER TABLE events)
ora_is_drop_column
(for ALTER TABLE events)
BEFORE DROP カタログ・オブジェクトの削除時   ora_sysevent
ora_login_user
AFTER DROP ora_instance_num
ora_database_name
ora_dict_obj_type
ora_dict_obj_name
ora_dict_obj_owner
BEFORE ANALYZE 分析文の発行時  ora_sysevent
ora_login_user
AFTER ANALYZE ora_instance_num
ora_database_name
ora_dict_obj_name
ora_dict_obj_type
ora_dict_obj_owner
BEFORE ASSOCIATE STATISTICS 関連統計文の発行時  ora_sysevent
ora_login_user
AFTER ASSOCIATE STATISTICS ora_instance_num
ora_database_name
ora_dict_obj_name
ora_dict_obj_type
ora_dict_obj_owner
ora_dict_obj_name_list
ora_dict_obj_owner_list
BEFORE AUDIT 監査または非監査文の発行時  ora_sysevent
AFTER AUDIT ora_login_user
ora_instance_num
BEFORE NOAUDIT ora_database_name
AFTER NOAUDIT
BEFORE COMMENT オブジェクトへのコメントの追加時  ora_sysevent
ora_login_user
AFTER COMMENT ora_instance_num
ora_database_name
ora_dict_obj_name
ora_dict_obj_type
ora_dict_obj_owner
BEFORE CREATE カタログ・オブジェクトの作成時   ora_sysevent
ora_login_user
AFTER CREATE ora_instance_num
ora_database_name
ora_dict_obj_type
ora_dict_obj_name
ora_dict_obj_owner
ora_is_creating_nested_table
(for CREATE TABLE events)
BEFORE DDL ほとんどのSQL DDL文の発行時。アドバンスト・キューの作成などのPL/SQLプロシージャ・インタフェースを介して発行されたALTER DATABASE、CREATE CONTROLFILE、CREATE DATABASEおよびDDLに対しては起動されません。  ora_sysevent
ora_login_user
AFTER DDL ora_instance_num
ora_database_name
ora_dict_obj_name
ora_dict_obj_type
ora_dict_obj_owner
BEFORE DISASSOCIATE STATISTICS 非関連統計文の発行時  ora_sysevent
ora_login_user
AFTER DISASSOCIATE STATISTICS ora_instance_num
ora_database_name
ora_dict_obj_name
ora_dict_obj_type
ora_dict_obj_owner
ora_dict_obj_name_list
ora_dict_obj_owner_list
BEFORE GRANT 権限付与文の発行時  ora_sysevent
ora_login_user
AFTER GRANT ora_instance_num
ora_database_name
ora_dict_obj_name
ora_dict_obj_type
ora_dict_obj_owner
ora_grantee
ora_with_grant_option
ora_privileges
BEFORE LOGOFF ユーザー・ログオフの開始時  ora_sysevent
ora_login_user
ora_instance_num
ora_database_name
AFTER LOGON ユーザーが正常にログインした後  ora_sysevent
ora_login_user
ora_instance_num
ora_database_name
ora_client_ip_address
BEFORE RENAME 名前の変更文の発行時  ora_sysevent
ora_login_user
AFTER RENAME ora_instance_num
ora_database_name
ora_dict_obj_name
ora_dict_obj_owner
ora_dict_obj_type
BEFORE REVOKE 取消し文の発行時  ora_sysevent
ora_login_user
AFTER REVOKE ora_instance_num
ora_database_name
ora_dict_obj_name
ora_dict_obj_type
ora_dict_obj_owner
ora_revokee
ora_privileges
AFTER SUSPEND 領域不足状態のためSQL文が一時停止された後。トリガーは、文が再開されるようにこの状態を修正する必要があります。  ora_sysevent
ora_login_user
ora_instance_num
ora_database_name
ora_server_error
ora_is_servererror
space_error_info
BEFORE TRUNCATE オブジェクトの切捨て時  ora_sysevent
ora_login_user
AFTER TRUNCATE ora_instance_num
ora_database_name
ora_dict_obj_name
ora_dict_obj_type
ora_dict_obj_owner

Reference:
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19248-02/adfns_triggers.htm