我必须创建一个具有主键的表,但名称会随时间而变化,并希望保留更改的历史记录,这是在Vertica上执行此操作的方法吗?
我是Vertica的新手,如果你能给我解释好的话会很好。
很确定没有专门跟踪它的系统表,但你可以通过查询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
语句。