/ * 分類: 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と、