【问题标题】:Conditionally drop temporary table in Redshift有条件地删除 Redshift 中的临时表
【发布时间】:2014-08-25 01:22:57
【问题描述】:

我们正在使用http://aws.amazon.com/redshift/,我正在报告中创建/删除临时表。有时我们会遇到有人创建了临时表但未能删除它的情况。

在其他数据库中,例如 Redshift 所基于的 PostgreSQL,我可以简单地:

DROP TEMP TABLE IF EXISTS tblfoo;

但这是 Redshift 中的语法错误。我可以自己使用http://docs.aws.amazon.com/redshift/latest/dg/r_STV_TBL_PERM.html 检查临时表是否存在,但这仅适用于我是超级用户并且我不是以超级用户身份运行的情况。我也可以去吞并异常,但是对于我的报告框架,我不想去那里。

那么,作为普通用户,我如何在不产生数据库错误的情况下,有条件地删除临时表(如果存在)?

【问题讨论】:

    标签: amazon-web-services amazon-redshift


    【解决方案1】:

    我运行的测试表明,我可以使用非超级用户 ID 在 stv_tbl_perm 中看到其他用户的临时表。我测试的集群版本是1.0.797。请注意,任何用户都无法在 pg_class 中看到其他用户的临时表。

    【讨论】:

    • 我发誓,上周我收到了来自select * from stv_tbl_perm where temp = 1; 的错误,但现在它似乎可以工作了。这只是在 Redshift 中改变了吗??
    • 不确定。很高兴它现在对你有用。 Def 希望内置“如果存在”功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多