SQL トリガーを作成/使用するサンプル

SQLのトリガーを作成/使用するサンプルです。

確認環境
・Oracle Express Edition 11g Release 2

目次

説明 トリガー(trigger)
サンプル トリガーを作成/変更する
  トリガーを削除する
  トリガーを確認する

トリガー(trigger)

トリガーを作成/変更する

トリガーを作成/変更するサンプルです。

以下、2つのテーブルがあるとします。
1つめのSYOUHINテーブルです。

SYOUHINテーブル
ID NAME CATEGORY
1 りんご フルーツ
2 みかん フルーツ
3 にんじん 野菜

2つめのrirekiテーブルです。

rirekiテーブル
event
 

 

上記2テーブルからTestView1というトリガーを作成します。

CREATE OR REPLACE TRIGGER TestTrigger1
  AFTER INSERT OR UPDATE OR DELETE
  ON SYOUHIN FOR EACH ROW
DECLARE
  event1  rireki.EVENT%TYPE;
BEGIN
  IF INSERTING THEN
    event1 := 'Insertしました';
  ELSIF UPDATING THEN
    event1 := 'Updateしました';
  ELSIF DELETING THEN
    event1 := 'Deleteしました';
  END IF;
  
  INSERT INTO rireki (event) VALUES (event1);
  -- またはプロシージャ等を呼ぶ
END;
/

1行目のTestTrigger1は、作成するトリガー名です。
OR REPLASEは任意です。REPLASEは交換するという意味で変更することができます。
2行目は、INSERTまたはUPDATEまたはDELETEが行われた後に操作を行うとしています。
3行目は、対象のテーブルを指定しています。FOR EACH ROWは各行ごとの操作がトリガの対象になります。
5行目は、変数です。%TYPEは、rirekiテーブルの項目eventと同じデータ型という意味です。
7~12行目のINSERTING、UPDATING、DELETINGは、条件述語と呼ばれるものでトリガーを起動した文を判定できます。
15行目は、insert文を実行しています。外部のプロシジャー等も実行することができます。

SYOUHINテーブルにinsert文,update文,delete文を実行します。

INSERT INTO SYOUHIN (id,name,category) 
VALUES ('4','ばなな','フルーツ')

UPDATE SYOUHIN
SET name = 'みかん', category = 'オレンジ'
WHERE id = 2;

DELETE FROM SYOUHIN
WHERE id = 1;

結果

結果は、以下のとおりです。

rirekiテーブル
event
Insertしました
Updateしました
Deleteしました

トリガーを削除する

トリガーを削除するサンプルです。

DROP TRIGGER TestTrigger1;

drop triggerとトリガー名を指定します。

トリガーを確認する

トリガーを確認するサンプルです。

SELECT * FROM USER_TRIGGERS
where TRIGGER_NAME = 'TESTTRIGGER1';

USER_TRIGGERSテーブルで作成したトリガーを確認できます。

関連の記事

SQL シーケンス(順序)を作成/使用するサンプル
SQL シノニムを作成/使用するサンプル
SQL ビューを作成/使用するサンプル

△上に戻る