まず、トリガーを作成するためには、CREATE TRIGGERステートメントを使用します。以下に、トリガーを作成するための基本的な構文を示します。
CREATE TRIGGER トリガー名
AFTER|BEFORE イベント
ON テーブル名
FOR EACH ROW
EXECUTE FUNCTION 関数名
このステートメントでは、以下の要素を指定する必要があります。
- トリガー名: 作成するトリガーの名前を指定します。
- イベント: トリガーが実行されるタイミングを指定します。AFTERまたはBEFOREのいずれかを選択します。
- テーブル名: トリガーを作成する対象のテーブル名を指定します。
- FOR EACH ROW: トリガーが各行に対して実行されることを示します。
- 関数名: トリガーが実行されたときに呼び出される関数の名前を指定します。
例えば、以下のようなトリガーを作成することができます。
CREATE TRIGGER my_trigger
AFTER INSERT ON my_table
FOR EACH ROW
EXECUTE FUNCTION my_function();
このトリガーは、my_tableテーブルに新しい行が挿入された後に実行され、my_functionという関数が呼び出されます。
トリガーを作成する際に、既存のトリガーがあるかどうかを確認したい場合には、IF NOT EXISTS句を使用することができます。以下に、この句を使用したトリガーの作成例を示します。
CREATE TRIGGER IF NOT EXISTS my_trigger
AFTER INSERT ON my_table
FOR EACH ROW
EXECUTE FUNCTION my_function();
このようにすることで、既に同じ名前のトリガーが存在する場合には、エラーが発生せずに作成をスキップします。