我想做点什么
DROP PROJECTION IF EXISTS myProjection;
显然我可以将 IF EXISTS 用于表格而不是投影。
我理解如果我用CASCADE放下表格,应该删除相应的投影,但我显然有一些孤立的投影,我没有跟踪。有时当我重命名表格/投影时,投影已经存在就失败了。
The Drop Projection page和this stackoverflow page for generic sql没什么帮助。
编辑:我在Mybatis Migrations中使用它。因此,如果任何脚本中存在错误,我的整个迁移都将失败。所以,不,我不能忽视错误。
如果投影没有IF EXISTS - 是否有编程方式(LIKE TSQL / PLSQL),我可以指定条件来检查投影是否存在并采取措施是否放弃?
答案 0 :(得分:1)
没有drop projection IF EXISTS ...
。您可以使用drop projection ...
- 当然 - 如果您尝试删除的投标不存在,您将收到错误消息。
您可以使用如下SQL的SQL列出给定模式/表的所有投影:
\set schema '''my_schema'''
\set table '''my_table'''
select
projection_name,
sum(row_count) as row_count,
sum(used_bytes) as used_bytes,
sum(wos_row_count) as wos_row_count,
sum(wos_used_bytes) as wos_used_bytes,
sum(ros_row_count) as ros_row_count,
sum(ros_used_bytes) as ros_used_bytes
from
projection_storage
where
anchor_table_schema = :schema and
anchor_table_name = :table
group by 1
order by 1
;
以下将列出与给定模式中的表关联的所有投影:
\set schema '''my_schema'''
select
projection_name,
anchor_table_name,
sum(row_count) as row_count,
sum(used_bytes) as used_bytes,
sum(wos_row_count) as wos_row_count,
sum(wos_used_bytes) as wos_used_bytes,
sum(ros_row_count) as ros_row_count,
sum(ros_used_bytes) as ros_used_bytes
from
projection_storage
where
anchor_table_schema = :schema
group by 1, 2
order by 1, 2
;
答案 1 :(得分:1)
您可以在vertica中查询目录表,这将为您提供所有当前模式的模式名称,
hiddenDiv.style.display = (this.value != "option1" && this.value != "option2") ? "none":"block";
答案 2 :(得分:0)
从 Vertica 9.2.x 开始,这是可能的。
DROP PROJECTION IF EXISTS myProjection;