Как создать таблицу на vertica, которая хранит полную историю изменений данных, в основном, обновление строки - PullRequest
0 голосов
/ 30 января 2019

Мне нужно создать таблицу с первичным ключом, но имя меняется как время и желание сохранить историю изменений, это способ сделать это на Vertica?

Яплохо знакомый с vertica, было бы хорошо, если бы вы могли хорошо объяснить мне.

1 Ответ

0 голосов
/ 30 января 2019

Уверен, что нет системной таблицы, которая бы отслеживала это так конкретно, но вы можете получить то, что ищете, запросив v_monitor.query_requests и отыскивая запросы, начинающиеся с UPDATE.

SELECT *
FROM v_monitor.query_requests
WHERE request ILIKE 'UPDATE%';

ILIKE является нечувствительным к регистру оператором LIKE.

Если вы хотите более точный способ поиска обновлений, вы можете выполнить свои обновления с меткой запроса: /*+LABEL('update')*/

UPDATE /*+LABEL('update')*/ table
SET col1 = col1 + 1;

Вы также можете пометить другие ваши запросы аналогично, INSERT /*+LABEL('insert') INTO table ...

Затем вы можете запросить таблицу query_requests для поиска этих конкретных меток.

SELECT *
FROM v_monitor.query_requests
WHERE request_label = 'update';

Обновить:

Начиная с 9.2, существует новая системная таблица с именем LOG_QUERIES, которая отслеживает некоторые изменения DDL, такие как CREATE, ALTER, TRUNCATE и т. Д. К сожалению - из моих тестов - этоне похоже, что он отслеживает обновления, поэтому может не помочь с вашим конкретным вопросом, но может быть полезно, если вы хотите отслеживать заявления CREATE или ALTER в будущем.Если у вас есть поддержка премиум-класса, вы можете также попросить включить в эту таблицу UPDATE операторов.

...