PLSQL文では、トリガ・レベルのトリガ、行レベルのトリガを記述する。

/ * 
分類:
    1、DDLトリガ
      動作しているときにドロップ、変更、作成、実行、トリガー活性化する
    2を、DMLトリガ
      、追加、削除、変更、トリガの起動を実行
    、システム・イベント・トリガを3 
      特定システムを実行しますイベント(終了し、ログインし、負荷を起動)
成分:
    1、トリガ・イベント:トリガーによって実行されるアクション引き起こし得る; DDL操作、DML操作、システム・イベント
    2、トリガ時間:代替:前、後、代わりに
    、3トリガ条件:ここで、条件
    4、トリガーオブジェクト:テーブル、ビュー、データベース・オブジェクト
    5、トリガ周波数:一度、行レベル:文レベル(表レベル)各行の各列は、トリガーの操作の状態が活性化される満たし、
    6 、操作をトリガー:トリガーの実行を; 

* / 
- 1と文レベルのトリガ。(一度実行)      
-   前とトリガートリガー実行文トリガーの後だけ(文は2文の実行に機会を与えないかどうかを判断する1)の実施に従うと、ステートメントが設定した後、最初のイベントを実行することができます     
- 理解:ときユーザーがアクションを実行するとき、それは私が書いたものの実装をトリガします

                                                -トリガーを作成し、トリガー+名前のキーワードを作成したり、交換してください神託を誘発します。
作成 または 交換する トリガー  insertInterceptor 
 後に削除 ON EMP                             - トリガの時間を種類が定義されています。xxのテーブル名のXXのXX。
DECLARE 
    v_moneyのemp.salの%のタイプを、
    ROW1のEMP %のROWTYPEを、
     カーソル Cを(NO EMP.DEPTNO %のタイプ)IS  SELECT  *  から EMP WHERE DEPTNO = ; NO   
 開始                                           
  INSERT  INTO EMP(EMPNO、ENAME、仕事、SAL)の値20' 学習'' ジョン・ドウ'2000 ); 
  
  オープン C(20 ); 
  ループ
  FETCH C INTO ROW1と、
   終了 するとき Cの%のNOTFOUND; 
  DBMS_OUTPUT.PUT_LINE(
    ' カーソルインデックス== ' || C をrowCount || 
    ' 名前== ' || row1.ename || 
    ' --------賃金== ' || row1.sal || 
    ' --------仕事== " ||row1.job 
  ); 
  
  エンドループ;
   閉じるC;
 エンド; 

                                                  - 試験結果は:新しい20削除EMP表20を充填し、EMP表のデータは、関連するセクタに対応する出力
削除 から EMP WHERE EMPNO = 20 ; 


- - 運動は、EMP TG01内のデータを削除できないように
ALTER  トリガー、TG01が有効
 ALTER  トリガーTG01は無効、
 削除 から EMP WHERE EMPNO = 2 ; 

- でEMPでの禁止ユーザーは、更新データ    
を作成 または 置き換える トリガーUpdateMessage 更新 ON EMPは
 DECLARE 
  
始める
  (RAISE_APPLICATION_ERROR - 20010.を' ユーザーがEMP内のデータを更新禁止');      - 注意Oracleエラーコード20000--20999; 
エンド; 

- テスト
更新 EMPのSETの ENAME = ' HA '  WHERE EMPNO = 7788 ALTER  トリガーUpdateMessage禁止する; 


- 2、行ごとに行レベルのトリガ:各行は活性化されるトリガーの操作の条件を満たし、
作成 または 交換 トリガrowMessageを更新 または INSERT  ON EMP ため各行が      
 DECLARE 
  
始まる         - 条件は、対応するプロンプトで実行された場合
  のIF更新次いで 
    DBMS_OUTPUT.PUT_LINEを(に実行);
   IF:old.sal >:new.sal 次いで                            - ロジックテーブル 
    RAISE_APPLICATION_ERROR(- 20002賃金の下落従業員を禁止する!);
     エンド IF ; 
  ELSIFを挿入後、
    DBMS_OUTPUT.PUT_LINEを(操作が入力されました);
  終了し た場合エンド; 

- 关闭触发器
変更 トリガupdateMessage禁止を、
変更する トリガーをinsertInterceptor無効。

更新 EMPのセット SAL = SAL + 1  DEPTNO = 20 コミット; 挿入 EMP(EMPNO、ENAME、SAL)の値5' 嘻嘻'500 ); 選択* からEMP;
選択 SAL から

 


  EMP WHERE DEPTNO = 20 ; 

- トリガー削除
ドロップ トリガー TG02と、

 

     

おすすめ

転載: www.cnblogs.com/ZXF6/p/11240300.html