У меня есть триггерная функция:
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"();
Это работает для таблицы "Пользователи". Каждый раз, когда я удаляю строку из таблицы "Пользователи", база данных вставляет строку с "uuidKey", "dateCreated", "dateModified", "dateSynced", "username", "entityName" ) в таблицу "DeletedEntities", которая Я буду использовать для синхронизации позже.
Вышеупомянутые работы. Здесь у меня проблема, у меня около двух десятков таблиц. Я знаю, что мне нужно СОЗДАТЬ ТРИГГЕР на каждой таблице, но я не хочу создавать настраиваемую триггерную функцию для каждой таблицы. Единственное, что изменилось бы от первой функции выше, - это последнее значение в инструкции INSERT внутри функции; вместо "Users" это будут "Ledgers", или "Journal", или что-то еще.
Внутри триггерной функции PostgreSQL, как мне получить имя таблицы, в которую также входит строка OLD?