私は、トリガ機能を持っている:これは、テーブル「ユーザー」のためにPostgreSQLのトリガ関数でテーブル名を取得するにはどうすればよいですか?
CREATE OR REPLACE FUNCTION "trigger_deleteUsers"()
RETURNS trigger AS
$BODY$
BEGIN
INSERT INTO "DeletedEntities" ("uuidKey", "dateCreated", "dateModified", "dateSynced", "username", "entityName")
VALUES (OLD."uuidKey", OLD."dateCreated", OLD."dateModified", "dateSynced", OLD."username", 'Users');
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql;
CREATE TRIGGER "deleteUsers" AFTER DELETE ON "Users" FOR EACH ROW EXECUTE PROCEDURE "trigger_deleteUsers"();
動作します。 "Users"テーブルから行を削除するたびに、データベースは( "uuidKey"、 "dateCreated"、 "dateModified"、 "dateSynced"、 "username"、 "entityName")の行を「DeletedEntities」テーブルに挿入します。後で同期のために使用します。
上記は機能します。ここに私の問題は約2ダースのテーブルがあります。私は各テーブルでトリガを作成する必要があることを知っていますが、私は各テーブルのカスタムトリガ関数を作成する必要はありません。上の最初の関数から変更される唯一のものは、関数内のINSERTステートメントの最後の値です。 「ユーザー」の代わりに「元帳」または「ジャーナル」などとなります。
PostgreSQLのトリガー機能の中で、OLD行が属するテーブルの名前もどうやって取得できますか?
私が探していたものは、ドキュメントの間違った場所を調べただけです。ありがとう! – adamek