Динамически извлекаемое новое значение из триггера - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь создать триггер, динамически вставляя журналы аудита на основе столбцов, возвращаемых курсором: 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...