infoという名前のデータベースがあります。データベースには、4つの異なるテーブル、、、info1がinfo2ありinfo3ますinfo4。
info1テーブル(、、INSERTなどDELETE)UPDATEに変更を加えるたびに、他の3つのテーブルにも同じ変更が表示されるように、ストアドプロシージャを作成したいと思います。
私はこれにPostgreSQLを使用していますが、このクエリを実行する方法がわかりません。
例を挙げて説明してください。
前もって感謝します!
infoという名前のデータベースがあります。データベースには、4つの異なるテーブル、、、info1がinfo2ありinfo3ますinfo4。
info1テーブル(、、INSERTなどDELETE)UPDATEに変更を加えるたびに、他の3つのテーブルにも同じ変更が表示されるように、ストアドプロシージャを作成したいと思います。
私はこれにPostgreSQLを使用していますが、このクエリを実行する方法がわかりません。
例を挙げて説明してください。
前もって感謝します!
基本的に、何をしているのかを理解するには、マニュアルを読む必要があります。@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();
このような変更には、トリガーを使用する必要があります: http://www.postgresql.org/docs/current/interactive/triggers.html
新しいデータを他のテーブルに挿入/更新/削除する関数を作成し、CREATE TRIGGER http: //www.postgresql.org/docs/current/interactive/sql-createtrigger.html で PostgreSQL を表示して、データが更新さ れるたびにその関数を呼び出す必要があります。ソーステーブルが変更されました。