SQLのトリガーを作成/使用するサンプルです。
確認環境 ・Oracle Express Edition 11g Release 2 |
目次
説明 | トリガー(trigger) |
サンプル | トリガーを作成/変更する |
トリガーを削除する | |
トリガーを確認する |
トリガー(trigger)
- トリガーは、表のデータが変更された等のイベントをきっかけにして別の処理を行う仕組みです。
- トリガー(trigger)は、引き金という意味です。
- 以下は、Oracleのトリガーのリンクです。
https://docs.oracle.com/cd/E16338_01/appdev.112/b56265/tdddg_triggers.htm
トリガーを作成/変更する
トリガーを作成/変更するサンプルです。
以下、2つのテーブルがあるとします。
1つめのSYOUHINテーブルです。
ID | NAME | CATEGORY |
---|---|---|
1 | りんご | フルーツ |
2 | みかん | フルーツ |
3 | にんじん | 野菜 |
2つめの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;
結果
結果は、以下のとおりです。
event |
---|
Insertしました |
Updateしました |
Deleteしました |
トリガーを削除する
トリガーを削除するサンプルです。
DROP TRIGGER TestTrigger1;
drop triggerとトリガー名を指定します。
トリガーを確認する
トリガーを確認するサンプルです。
SELECT * FROM USER_TRIGGERS
where TRIGGER_NAME = 'TESTTRIGGER1';
USER_TRIGGERSテーブルで作成したトリガーを確認できます。
関連の記事
SQL シーケンス(順序)を作成/使用するサンプル
SQL シノニムを作成/使用するサンプル
SQL ビューを作成/使用するサンプル