我们正在使用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检查自己是否存在临时表,但这只有在我是超级用户并且我不是以超级用户身份运行时才有效。我也可以去吞下异常,但是在我的报告框架中,我宁愿不去那里。
那么,作为普通用户,如果没有生成数据库错误,我怎么能有条件地删除临时表(如果它存在)?
答案 0 :(得分:2)
我跑的测试显示我可以看到其他用户' stv_tbl_perm中的临时表使用非超级用户ID。我测试的集群版本是1.0.797。请注意,没有用户可以看到其他用户' pg_class中的临时表。