Мне было интересно, возможно ли создать функцию триггера с аргументами, поскольку логика функции та же, но она может просто вставляться в разные таблицы и имена столбцов.
Вот функция:
CREATE OR REPLACE FUNCTION
createInstance(table_name TEXT, column_name TEXT)
RETURNS TRIGGER AS
$BODY$
BEGIN
INSERT INTO
table_name
(
column_name,
account_id
)
VALUES
(
new._id,
new.account_id
);
RETURN new;
END;
$BODY$
language plpgsql;
Ошибка:
ERROR: trigger functions cannot have declared arguments
HINT: The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV instead.
CONTEXT: compilation of PL/pgSQL function "createinstance" near line 1
Пример триггера:
CREATE TRIGGER trig_instanced_item_copy
AFTER INSERT ON creator.items
FOR EACH ROW
EXECUTE PROCEDURE createInstance();