PostgreSQL で値を設定する挿入トリガー 質問する

PostgreSQL で値を設定する挿入トリガー 質問する

Postgresql にテーブルがありT、その列の 1 つが であると仮定しますC1

新しいレコードがテーブルに追加されるときに関数をトリガーしたいと思いますT。関数は新しいレコードの列の値をチェックしC1、それが null/空の場合はその値を に設定する必要があります'X'

これは可能ですか?

ベストアンサー1

列のデフォルト値を設定しても機能しないため、トリガーが必要であることは正しいです。デフォルト値はnull値に対してのみ機能し、空白の値を防ぐのに役立ちません。

postgres では、トリガーを作成するにはいくつかの手順があります。

ステップ1: 型を返す関数を作成しますtrigger

CREATE FUNCTION my_trigger_function()
RETURNS trigger AS $$
BEGIN
  IF NEW.C1 IS NULL OR NEW.C1 = '' THEN
    NEW.C1 := 'X';
  END IF;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql

ステップ2: 上記の関数を呼び出して発火するトリガーを作成しBEFORE INSERT、入力値を変更できるようにします。前に彼らはテーブルにぶつかった。

CREATE TRIGGER my_trigger
BEFORE INSERT ON T
FOR EACH ROW
EXECUTE PROCEDURE my_trigger_function()

これで完了です。

見る上記のコードはSQLFIddleで実行されます


コメントで、値が'X'サブクエリから取得されると書かれています。その場合は、関連する行を次のように変更します。

NEW.C1 := (select some_column from some_table where some_condition);

おすすめ記事