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

SQLのトリガーを作成/使用するサンプルです。Oracleで確認しています。

目次

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

トリガー(trigger)

 

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

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

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

employeeテーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 佐藤 sato
log1テーブル
event
 

 

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

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

1行目のTestTrigger1は、作成するトリガー名です。
OR REPLASEは任意です。REPLASEがある場合は実行すると上書きされます。

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

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

INSERT INTO employee (id,name,romaji) 
VALUES ('5','竹田','takeda')

UPDATE employee
SET name = 'user1', romaji = 'user1'
WHERE id = 3;

DELETE FROM employee
WHERE id = 2;

 

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

log1テーブル
event
Insert completed
Update completed
Delete completed

 

トリガーを削除する

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

DROP TRIGGER TestTrigger1;

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

 

トリガーを確認する

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

SELECT * FROM USER_TRIGGERS
where TRIGGER_NAME = 'TESTTRIGGER1';

whereの条件の値の大文字小文字は区別されます。

関連の記事

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

△上に戻る