私はカラムbuilderとpermit_numberを持つ2つのテーブルpermit_tableを持っています。 weekly_tableとapplicantとpermit_numberカラム。 ここで、permit_tableのビルダー列に更新がある場合、permit_tableの更新されたビルダー値の許可番号が任意の許可番号と一致する必要がある場合、weekly_tableのapplicantcolumnを '古い申請者の値+新しいBuilderの値' weekly_tableで私は下記のトリガーと機能postgresqlの更新トリガーの後に1つのテーブルから別のテーブルに値を更新
CREATE OR REPLACE FUNCTION edmonton.automated_builder_update_trigger_manual()
RETURNS trigger AS
$BODY$
DECLARE
e record;
BEGIN
EXECUTE format('Update weekly_table as a
set applicant = old.applicant||new.builder where old.permit_number =
a.permit_number');
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION edmonton.automated_builder_update_trigger_manual()
OWNER TO postgres;
とトリガとしようとした は古い 『「のテーブルの句エントリから欠落』というエラーを
CREATE TRIGGER builder_update_trigger_manual
AFTER UPDATE
ON edmonton.permit_table
FOR EACH ROW
WHEN (old.builder IS DISTINCT FROM new.builder)
EXECUTE PROCEDURE edmonton.automated_builder_update_trigger_manual();
を取得しています。変更
は* OLD持っている関数の本体に直接UPDATEを書くとNEW *補間されます。なぜなら、SQLは 'old'を実際のテーブルとして探すのと反対に、補間を要求している' EXECUTE'にクエリを渡すこととは対照的です。 –
ありがとうございました。 –