2013-08-05 13 views
10

Mam funkcję wyzwalania:Jak mogę uzyskać nazwę tabeli w funkcji wyzwalacza 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"(); 

Działa to dla tabeli "users". Za każdym razem, gdy usuwam wiersz z tabeli "Użytkownicy", baza danych wstawia wiersz z ("uuidKey", "dateCreated", "dateModified", "dateSynced", "username", "entityName") do tabeli "DeletedEntities", która Będę używał później do celów synchronizacji.

Powyższe prace. Oto mój problem Mam około dwóch tuzinów tabel. Wiem, że muszę utworzyć TRIGGER na każdej tabeli, ale nie chcę tworzyć niestandardowej funkcji wyzwalania dla każdej tabeli. Jedyną rzeczą, która zmieni się z pierwszej funkcji powyżej, jest ostatnia wartość w instrukcji INSERT w ramach funkcji; zamiast "Użytkownicy" będą to "Księgi rachunkowe", "Dziennik" lub cokolwiek innego.

W funkcji wyzwalacza PostgreSQL, w jaki sposób uzyskać nazwę tabeli, do której należy również stary wiersz?

Odpowiedz

Powiązane problemy