データベーストリガ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/04/06 07:35 UTC 版)
![]() |
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2024年2月)
|
データベーストリガは、表に対するイベントに反応して自動的に実行される操作を意味する。トリガはデータ操作言語によるデータ状態の管理を自動化するために用いられる。トリガを利用することで、データ操作の限定、操作の記録、変更操作の監査などを行うことができる。
トリガの種類
トリガには大きく分けて「行トリガ」と「文トリガ」の2つの種類がある。
- 行トリガ
- 表の中の影響を受けた行それぞれに対して実行される。変更前または変更後の行は OLD, NEW という擬似的な行変数を使って読み取ることができる。
- 文トリガ
- INSERT, UPDATE, DELETE 文に対して一度だけ実行される。
また、トリガは以下の属性を持つ。
- "BEFORE" または "AFTER"
- トリガが実行されるタイミングを指定する。
- "INSTEAD OF"
- トリガを元の文の代わりに実行する。
- "WHEN"
- トリガを起動する条件式を指定する。
一般的に、トリガは以下の3つのイベントにより起動される。トリガでは SELECT 文によるデータ取得に影響を及ぼすことはできない。
Oracle のトリガ
Oracle Database では標準のトリガの他、Oracle 9i にて「スキーマレベルトリガ」と呼ばれる、スキーマの変更やユーザのログイン/ログオフに対するトリガが追加された。
- INSERT
- UPDATE
- DELETE
- AFTER CREATE
- BEFORE/AFTER ALTER
- BEFORE/AFTER DROP
- BEFORE LOGOFF / AFTER LOGON
Microsoft SQL Server のトリガ
Microsoft SQL Server では標準のトリガの他、ビューに対して INSTEAD OF トリガを定義できる。また、Microsoft SQL Server 2005 にて データ定義言語 (DDL) トリガが追加された。 Microsoft SQL ServerのDDLトリガーで利用可能な全ての発動イベントのリストは、Microsoft Docsで入手可能である。[1]
- INSERT
- UPDATE
- DELETE
- DROP TABLE
- CREATE TABLE
- ALTER TABLE
- ログイン
PostgreSQL のトリガ
PostgreSQL はバージョン 6.2 (1997年) から標準トリガがサポートされている。さらにバージョン 8.4 で TRUNCATE イベント、9.0 で UPDATE OF, WHEN 句をサポートした。
- INSERT
- UPDATE / UPDATE OF
- DELETE
- TRUNCATE
10.0 で REFERENCING TABLE 句をサポートした。
11.0 で EXECUTE FUNCTION 句をサポートした。
14.0 で OR REPLACE 句をサポートした。
トリガにて実行される処理は直接記述せず、関数として与える。[2]
文法:
CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] } ON table [ FOR [ EACH ] { ROW | STATEMENT } ] [ WHEN (...) ] EXECUTE PROCEDURE funcname ( arguments )
MySQL のトリガ
MySQL はバージョン 5.0.2 にて標準トリガがサポートされた。
- INSERT
- UPDATE
- DELETE
文法:
CREATE TRIGGER salary_trigger BEFORE UPDATE ON employee_table REFERENCING NEW ROW AS n, OLD ROW AS o FOR EACH ROW IF n.salary <> o.salary THEN ... END IF;
SQLite のトリガ
SQLite は、文トリガーではなく、行トリガーのみをサポートする。 SQLite ではサポートされていない更新可能なビューは、INSTEAD OF トリガーを使用してエミュレートできる。
文法:
CREATE [TEMP | TEMPORARY] TRIGGER [IF NOT EXISTS][database_name .] trigger_name [BEFORE | AFTER | INSTEAD OF] {DELETE | INSERT | UPDATE [OF column_name [, column_name]...]} ON {table_name | view_name} [FOR EACH ROW] [WHEN condition is mandatory ] BEGIN ... END
脚注
- ^ “DDLイベント - SQL Server”. 2025年1月3日閲覧。
- ^ “PostgreSQL: Documentation: 17: CREATE TRIGGER”. 2025年2月20日閲覧。
外部リンク
データベーストリガ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/12 16:10 UTC 版)
登録されている表に対して、行追加、更新、削除の前後のタイミングで自動的に処理を走らせるPL/SQLブロックを登録することができる。これをデータベーストリガと呼ぶ。処理されるデータ1件ずつ処理することができ、また変更前と変更後の値を使うことができる。起動条件を細かく設定することも可能である。本来は「制約」定義で管理できない参照整合性を管理するために用いるものである。業務処理を暗黙に組み込みすぎると、業務処理の変更があった場合に他の応用プログラムの挙動に影響を与えやすいため、注意して利用すべきである。 エラー処理など考慮すべき点は多いが、非正規化した表の同期に使用すると便利である。
※この「データベーストリガ」の解説は、「PL/SQL」の解説の一部です。
「データベーストリガ」を含む「PL/SQL」の記事については、「PL/SQL」の概要を参照ください。
- データベーストリガのページへのリンク