データベーストリガー 【database trigger】 DBトリガー
概要
データベーストリガー(database trigger)とは、データベース管理システム(DBMS)の機能の一つで、テーブルに何らかの操作が加えられた時にあらかじめ指定した処理を自動的に起動する機能。ストアドプロシージャの一種として提供される。単に「トリガー」と略されることも多い。処理の内容と、起動する条件、実行するタイミングなどを指定して設定する。いくつかのデータベースやテーブルの内容が連動していて、一か所に行われた変更を他に反映するといった処理を自動的に行いたい場合などに利用される。
複数のアプリケーションで共通する処理などを適切にトリガー設定することにより、個別のアプリケーションをシンプルに記述できるといったメリットがある。ただし、多用しすぎると性能が低下したり、処理全体の見通しが悪くなり意図しない動作を引き起こしたりする危険もある。
SQL文による作成
データベース操作の標準的な言語であるSQLでは、「CREATE TRIGGER」文を用いてトリガーを作成することができる。起動条件は「BEFORE INSERT」「AFTER UPDATE」のように操作の種類と実行のタイミングを組み合わせて指定する。タイミングは操作の前に実行する「BEFORE」、後に実行する「AFTER」、操作の代わりに実行する「INSTEAD OF」などがある。
多くのDBMSではINSERT文、UPDATE文、DELETE文に対してトリガーを設定することができ、参照のみで何も変更しないSELECT文は指定できない。SQL Serverのように、DROP TABLE文やCREATE TABLE文、ALTER TABLE文などデータ定義言語(DDL)に属する操作に対して設定できる場合もある。
指定の操作によって影響を受ける各行のそれぞれに対して処理を行う「行トリガー」(row trigger)と、INSERT文などの操作自体について一度だけ実行される「文トリガー」(statement trigger)がある。行トリガーでは操作前の行を「OLD」、操作後の行を「NEW」というラベルで参照することができる。
(2024.9.6更新)