Я пытаюсь создать триггер, динамически вставляя журналы аудита на основе столбцов, возвращаемых курсором: audited_column_cursor ('managed_content').
Я не знаю, как получить текущее значение столбца из новой версии объекта.
Пример:
так я получаю значение, когда передаю имя столбца stati c: NEW.version_id
я хочу получить значение на основе динамического c имени столбца, используя текущее значение курсора table_column.column_name: new.table_column.column_name
CREATE FUNCTION proc_managed_content_audit_insert()
RETURNS TRIGGER AS $managed_content_audit$
DECLARE
table_column RECORD;
table_columns refcursor;
audit_table_id integer;
BEGIN
table_columns := audited_column_cursor('managed_content');
LOOP
FETCH table_columns INTO table_column;
EXIT WHEN NOT FOUND;
SELECT id INTO audit_table_id FROM audit_table where change_object_type = 'managed_content';
INSERT INTO audit_action(change_type, username, change_object_id, column_name, old_value, new_value,
audit_table_id)
VALUES ('INSERT', 'test-user', NEW.id, table_column.column_name,
old.current_content_version_id, new.table_column.column_name(PROBLEMATIC), audit_table_id);
END LOOP;
RETURN NEW;
END;
$managed_content_audit$ LANGUAGE plpgsql;