トリガーとは


トリガーは、表に対して何らかの変更処理が加えられたときに、その変更処理をきっかけとして自動的に実行される特殊なストアドプロシージャのことです。
表に対するなんらかの変更処理とは、INSERT 文、UPDATE 文及び DELETE 文といったデータ操作文を実行することです。

トリガーを定義するときには、その対象となるテーブル、トリガーが起動するきっかけとなる表に対する変更処理、トリガーの処理内容、トリガーの起動するタイミングなどを指定します。

トリガーは指定したテーブルを監視し、指定した変更処理がテーブルに対して行われると、指定したタイミングで指定した処理を実行します。

トリガーはアプリケーションから呼び出されるものではなく、アプリケーションには全く依存しないものです。
従って、あるアプリケーションにより、テーブルのデータが変更されても、データの整合性を保つようにトリガーを定義しておけば、他のアプリケーションによりデータが変更されてもデータの整合性は確保されます。

例えば、受注表にデータを追加すると同時に、在庫表のデータを更新するアプリケーション A を作成したとします。
アプリケーション A を日常的に使用しているときに、何らかの理由で受注表にデータを追加だけを行うアプリケーション B を実行してしまうと、データの整合性がなくなることになります。

このような場合、受注表にデータが追加されたときに、在庫表のデータを更新するようにトリガーを定義しておけば、どのアプリケーションでデータを追加したとしても、在庫表のデータの整合性を確保することができます。

また、さまざまなアプリケーションで共通に実行する処理をトリガーに定義しておけば、アプリケーションを簡略化することができます。
アプリケーション側では、テーブルに対するデータ操作文だけを実行するようにしておき、後の処理はトリガーに任せてしまうことにより、保守が容易になります。

このように、トリガーを利用することにより、いくつかのメリットがありますが、デメリットが生じることもあります。

トリガーはテーブルにデータ操作文が実行されるたびに実行されるものである。その為、データ操作を頻繁に行うアプリケーションでトリガーを多用するとパフォーマンスが低下することがあります。

また、アプリケーション自体はトリガーによってどのような処理が行われるのかを知ることができません。
そのため、トリガーを多用すると、アプリケーションによる処理とトリガーによる処理の関係がわかりにくくなり、全体としての処理内容を把握しにくくなります。
その結果保守性が低下することがあります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


5 + = 10

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>