如何在vertica上创建一个表,以保留数据更改的全部历史记录,主要是行的更新

时间:2019-01-30 01:55:10

标签: vertica

我必须创建一个具有主键的表,但是名称会更改,例如时间,并希望保留更改的历史记录,这是在Vertica上执行此操作的一种方法吗?

我是vertica的新手,如果您能对我很好地解释,那就太好了。

1 个答案:

答案 0 :(得分:0)

肯定没有系统表可以对其进行具体跟踪,但是您可以通过查询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更改,例如CREATEALTERTRUNCATE等。我的测试-它看起来好像无法跟踪更新,因此可能无法解决您的确切问题,但是如果您想跟踪列表中的CREATEALTER语句,则可能很有用。未来。如果您有高级支持,则可以要求它们在此表中也包含UPDATE语句。