web-dev-qa-db-ja.com

PostgreSQLを使用して別のテーブルを更新するトリガーを挿入する

Awardsという名前のテーブルがあります。テーブルアワードの挿入ごとに異なるテーブルを更新するトリガーをPostgreSQLにマウントするにはどうすればよいですか?

17
user1658873

ここには、table1およびtable2という名前の2つのテーブルがあります。トリガーを使用して、table2への挿入時にtable1を更新します。

テーブルを作成する

CREATE TABLE table1
(
  id integer NOT NULL,
  name character varying,
  CONSTRAINT table1_pkey PRIMARY KEY (id)
)

CREATE TABLE table2
(
  id integer NOT NULL,
  name character varying
)

トリガー関数

CREATE OR REPLACE FUNCTION function_copy() RETURNS TRIGGER AS
$BODY$
BEGIN
    INSERT INTO
        table2(id,name)
        VALUES(new.id,new.name);

           RETURN new;
END;
$BODY$
language plpgsql;

トリガー

CREATE TRIGGER trig_copy
     AFTER INSERT ON table1
     FOR EACH ROW
     EXECUTE PROCEDURE function_copy();
42
Sachin Gupta

PL/PgSQLトリガーのドキュメント が必要です。これは、特にこのケースについてのみ説明しています。一般的な トリガーに関するドキュメント も役立つ場合があります。

これには、BEFOREまたはAFTERトリガーを使用できます。私はおそらくAFTERトリガーを使用して、挿入されている行の最終バージョンをトリガーが確認できるようにします。あなたが欲しいFOR EACH ROW、 もちろん。

4
Craig Ringer