Trigger Function Dialog¶
トリガー機能 ダイアログを使用して、trigger_functionを作成または管理します。トリガー関数は、トリガーが起動したときに呼び出されるアクションを定義します。
トリガー機能 ダイアログは、 一般 、 定義 、 コード 、 オプション 、 パラメーター 、 セキュリティ のダイアログタブを介してトリガー機能の開発を編成します。 SQL タブには、ダイアログ選択によって生成されたSQLコードが表示されます。
[ General ]タブのフィールドを使用して、トリガー機能を識別します。
Name フィールドを使用して、トリガー関数の説明的な名前を追加します。名前は pgAdmin ツリーコントロールに表示されます。トリガー関数はアルファベット順に呼び出されることに注意してください。
所有者 の横にあるドロップダウンリストボックスを使用して、トリガー関数を所有するロールを選択します。
スキーマ フィールドのドロップダウンリストボックスから、トリガー関数が存在するスキーマの名前を選択します。
コメント フィールドにトリガー機能に関するメモを保存します。
[ 定義 ]タブをクリックして続行します。
[ 定義 ]タブのフィールドを使用して、トリガー機能を定義します。
Returntype の横にあるドロップダウンリストボックスを使用して、トリガー関数に関連付けられている擬似型を指定します。
DMLトリガーを作成する場合は、 トリガー を選択します。
DDLトリガーを作成する場合は event_trigger を選択します。
言語 の横にあるドロップダウンリストボックスを使用して、実装言語を選択します。デフォルトは plpgsql です。
[ コード ]タブをクリックして続行します。
Code フィールドを使用して、トリガー関数が呼び出されたときに実行されるコードを記述します。
[ オプション ]タブをクリックして続行します。
[ オプション ]タブのフィールドを使用して、トリガー機能のアクションを説明または変更します。
ボラティリティ の横にあるドロップダウンリストボックスを使用して、次のいずれかを選択します。
VOLATILE は、トリガー機能の値が1回のテーブルスキャン内でも変更できることを示します。
STABLE は、トリガー関数がデータベースを変更できないこと、および1回のテーブルスキャン内で、同じ引数値に対して一貫して同じ結果を返すことを示します。
IMMUTABLE は、トリガー関数がデータベースを変更できず、同じ引数値が指定された場合に常に同じ結果を返すことを示します。
ReturnsaSet? スイッチを動かして、トリガー関数が複数の行を含むセットを返すかどうかを示します。デフォルトは いいえ です。
Strict? スイッチを移動して、トリガー関数が引数のいずれかがNULLの場合に常にNULLを返すかどうかを示します。 Yes の場合、NULL引数があると関数は実行されません。代わりにNULL結果が自動的に想定されます。デフォルトは いいえ です。
Securityofdefiner? スイッチを移動して、トリガー関数を作成したユーザーの権限で実行することを指定します。デフォルトは いいえ です。
Window? スイッチを動かして、トリガー関数がプレーン関数ではなくウィンドウ関数であることを示します。デフォルトは いいえ です。これは現在、Cで記述されたトリガー関数でのみ役立ちます。
Estimatedcost フィールドを使用して、トリガー関数の推定実行コストを表す正の数をcpu_operator_cost単位で指定します。関数がセットを返す場合、これは返される行ごとのコストです。
Estimatedrows フィールドを使用して、クエリプランナーがトリガー関数が返すと予想される行の推定数を示す正の数を指定します。これは、関数がセットを返すように宣言されている場合にのみ許可されます。デフォルトの想定は1000行です。
リーク防止? スイッチを動かして、トリガー機能に副作用があるかどうかを示します。デフォルトは いいえ です。このオプションはスーパーユーザーのみが設定できます。
[ パラメーター ]タブをクリックして続行します。
[ パラメーター ]タブのフィールドを使用して、トリガー機能が呼び出されたときに適用される設定を指定します。 追加 アイコン(+)をクリックして、 名前 / 値 のペアを下のテーブルに追加します。
名前 フィールドのドロップダウンリストボックスを使用して、パラメーターを選択します。
Value フィールドを使用して、選択したパラメーターに関連付けられる値を指定します。このフィールドは状況依存です。
追加 アイコン(+)をクリックして、追加のパラメーターを設定します。パラメーターを破棄するには、行の左側にあるゴミ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。
[ セキュリティ ]タブをクリックして続行します。
[ セキュリティ ]タブを使用して、特権を割り当て、セキュリティラベルを定義します。
[ Privileges ]パネルを使用して、トリガー機能の使用特権をロールに割り当てます。 追加 アイコン(+)をクリックして、ロールをテーブルに追加します。
Grantee フィールドのドロップダウンリストボックスからロールの名前を選択します。
Privileges フィールド内をクリックします。1つ以上の特権の左側にあるチェックボックスをオンにして、選択した特権を指定されたユーザーに付与します。
特権を付与するためのデフォルトの付与者である現在のユーザーが Grantor フィールドに表示されます。
追加 アイコン(+)をクリックして、追加の特権を割り当てます。特権を破棄するには、行の左側にあるゴミ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。
SecurityLabels パネルを使用して、トリガー機能に適用されるセキュリティラベルを定義します。 追加 アイコン(+)をクリックして、各セキュリティラベルの選択を追加します。
Provider フィールドにセキュリティラベルプロバイダーを指定します。名前付きプロバイダーをロードし、提案されたラベル付け操作に同意する必要があります。
セキュリティラベル フィールドにセキュリティラベルを指定します。特定のラベルの意味は、ラベルプロバイダーの裁量にあります。PostgreSQLは、ラベルプロバイダーがセキュリティラベルを解釈する必要があるかどうか、またはどのように解釈するかについて制限を設けていません。それらを格納するメカニズムを提供するだけです。
Add アイコン(+)をクリックして、追加のセキュリティラベルを割り当てます。セキュリティラベルを破棄するには、行の左側にあるゴミ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。
SQL タブをクリックして続行します。
トリガー機能 ダイアログに入力すると、SQLコマンドが生成されます(以下の例を参照)。確認には SQL タブを使用します。他のタブに再度アクセスして、SQLコマンドを変更します。
例¶
以下は、 トリガー機能 ダイアログでのユーザー選択によって生成されたsqlコマンドの例です。
ここに示す例は、 emp_stamp という名前のトリガー関数の作成を示しています。
Info ボタン(i)をクリックして、オンラインヘルプにアクセスします。
Save ボタンをクリックして作業を保存します。
作業を保存せずに終了するには、 閉じる ボタンをクリックします。
Reset ボタンをクリックして、構成パラメーターを復元します。