0

infoという名前のデータベースがあります。データベースには、4つの異なるテーブル、、、info1info2ありinfo3ますinfo4

info1テーブル(、、INSERTなどDELETEUPDATEに変更を加えるたびに、他の3つのテーブルにも同じ変更が表示されるように、ストアドプロシージャを作成したいと思います。

私はこれにPostgreSQLを使用していますが、このクエリを実行する方法がわかりません。

例を挙げて説明してください。

前もって感謝します!

4

2 に答える 2

2

基本的に、何をしているのかを理解するには、マニュアルを読む必要があります。@Michael はリンクを提供しました。

これについては、さまざまな方法があります。と の 2 つの典型的な例を次に示しUPDATEますDELETE

UPDATE のトリガー関数を作成します。

CREATE OR REPLACE FUNCTION trg_info1_upaft()
  RETURNS trigger AS
$BODY$
BEGIN
    UPDATE info2
    SET col1 = NEW.col1
    --more?
    WHERE info2.info1_id = NEW.info1_id;

    UPDATE info3
    SET col1 = NEW.col1
    --more?
    WHERE info3.info1_id = NEW.info1_id;

    -- more?
    RETURN NULL; -- because trigger is meant for AFTER UPDATE
END;
$BODY$
  LANGUAGE plpgsql;

それを利用してトリガーを作成します。

CREATE TRIGGER upaft
  AFTER UPDATE
  ON info1
  FOR EACH ROW
  EXECUTE PROCEDURE trg_info1_upaft();

削除の場合:

CREATE OR REPLACE FUNCTION trg_info1_delaft()
  RETURNS trigger AS
$BODY$
BEGIN
    DELETE FROM info2
    WHERE info1_id = OLD.info1_id;

    -- more?
    RETURN NULL; -- because trigger is meant for AFTER DELETE
END;
$BODY$
  LANGUAGE plpgsql;

CREATE TRIGGER delaft
  AFTER DELETE
  ON info1
  FOR EACH ROW
  EXECUTE PROCEDURE trg_info1_delaft();
于 2012-08-16T13:52:46.513 に答える
1

このような変更には、トリガーを使用する必要があります: http://www.postgresql.org/docs/current/interactive/triggers.html

新しいデータを他のテーブルに挿入/更新/削除する関数を作成し、CREATE TRIGGER http: //www.postgresql.org/docs/current/interactive/sql-createtrigger.html で PostgreSQL を表示して、データが更新さ れるたびにその関数を呼び出す必要があります。ソーステーブルが変更されました。

于 2012-08-16T11:47:56.747 に答える