2013-08-05 14 views
10

私は、トリガ機能を持っている:これは、テーブル「ユーザー」のために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行が属するテーブルの名前もどうやって取得できますか?

答えて

関連する問題