トリガーとプロシージャーの主な違いは、トリガーはイベントが発生したときに自動的にアクションを実行するために使用されるのに対し、プロシージャーは呼び出されたときに特定のタスクを実行するために使用されることである。
オラクルは、オラクル社によって開発されたリレーショナルデータベース管理システムです。
プログラマーは、そのデータベースに対してさまざまな操作を行うことができる。
トリガーとプロシージャはそのうちの2つの操作です。
PL/SQL言語は、これらのデータベースに対するクエリを記述するための言語です。
トリガーとは
オラクルエンジンは特定のイベントが発生したときにトリガーを起動させます。
トリガーは特定の条件が満たされたときに起動されます。
シナリオに応じて、テーブル、ビュー、スキーマ、データベースなどにトリガーを設定することができます。
以下のようなイベントに対応するトリガーを記述することができる。
INSERT、UPDATE、DELETEなどのステートメントを実行するとき。
つまり、データ操作言語のステートメントを実行するとき。
CREATE、DROP、ALTERなどのステートメントを実行するとき。
つまり、データ定義言語ステートメントを実行するとき。
LOGON、LOGOFF、STARTUP、SHUTDOWNなどのデータベース操作を実行するとき。
全体として、トリガはいくつかの利点を提供します。
それは、データを保護し、無効なトランザクションを防ぎます。
また、複数のテーブルを同期させることもできます。
通常、これらのデータベースは、テーブル間の一貫した関係を維持します。
この性質を参照整合性(referential integrity)と呼びます。
トリガーは参照整合性の確保に役立ちます。
さらに、トリガーをイベントロギングや監査に利用することもできます。
プロシージャとは
プロシージャは、特定のタスクを実行することができます。
これは他のプログラミング言語における関数に似ています。
プロシージャーは、ヘッダーとボディの2つの主要なセクションから構成されています。
ヘッダーセクションは、プロシージャの名前から構成されています。
また、プロシージャに渡される変数やパラメータも含まれます。
ボディは、宣言部、実行部、例外部から構成される。
宣言部は、定数や変数などの宣言を含む。
実行部には、タスクを実行するためのステートメントが含まれます。
最後に、例外セクションには、実行時エラーに対処するためのコードがあります。
プロシージャのパラメータには、次の3種類があります。
INパラメータ – 手続きはINパラメータを参照できるが、パラメータの値を上書きすることはできない。
OUTパラメータ – プロシージャはOUTパラメータを参照することはできないが、パラメータの値を上書きすることはできる。
INOUTパラメーター – プロシージャーはINOUTパラメーターを参照でき、そのパラメーターの値を上書きすることができます。
トリガーとプロシージャーの違い
定義
トリガーは、何らかのイベントが発生したときに自動的に実行または起動されるストアドプログラムであり、プロシージャは、それを呼び出すとデータベース上で特定のタスクを実行することができるステートメントのグループです。
これがトリガーとプロシージャーの主な違いです。
使用方法
トリガーとプロシージャーのもう一つの大きな違いは、その使用方法です。
トリガーは何らかのイベントが発生したときに自動的にアクションを実行するのに役立ち、プロシージャは呼び出されたときに特定のタスクを実行するのに役立ちます。
結論
トリガーとプロシージャは、Oracleのようなリレーショナルデータベース上で実行できる2つの操作です。
トリガーとプロシージャーの違いは、トリガーがイベント発生時に自動的にアクションを実行するために使用されるのに対し、プロシージャーは呼び出されたときに特定のタスクを実行するために使用されることである。