【发布时间】:2016-01-28 19:17:46
【问题描述】:
我想做类似的事情
DROP PROJECTION IF EXISTS myProjection;
显然我可以将 IF EXISTS 用于表格,但不能用于投影。
我知道如果我使用 CASCADE 删除表格,那应该会删除相应的投影,但我显然有一些我没有跟踪的孤立投影。有时当我重命名表/投影时,它会说投影已经存在。
The Drop Projection page 和 this stackoverflow page for generic sql 没有多大帮助。
编辑:我在 Mybatis Migrations 中使用它。因此,如果任何脚本中有错误,我的整个迁移都会失败。所以,不,我不能忽略这个错误。
如果没有 IF EXISTS 的投影 - 是否有一种编程方式(如 TSQL/PLSQL),我可以指定一个条件来检查投影是否存在并采取操作是否删除它?
【问题讨论】:
-
您可以检查系统视图
projections是否存在投影 -
如果投影不存在,@Hogan GET_PROJECTION_STATUS 会抛出错误。我刚刚确认了我的运行:SELECT GET_PROJECTION_STATUS('myProjection');
-
@a_horse_with_no_name 考虑到 vertica 中没有 If 语句,我不确定如何准确地构建脚本。我尝试使用case statement,但似乎不是可行的方法。
-
你能提供更多关于你的过程的细节吗?为什么不直接发出
DROP并忽略错误?