You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift临时表重复创建报错问题及解决方法咨询

Redshift临时表重复创建报错的解决方法

Redshift的临时表是会话级的,一旦在当前会话中创建成功,除非手动删除或会话结束,否则会一直存在。所以你第二次执行CREATE TEMP TABLE时会提示表已存在,且原表数据不会被更新,导致TargetDate还是旧值。下面是几种可行的解决办法:

方法1:使用CREATE OR REPLACE直接替换临时表

这是最简洁的方式,执行时会自动替换已存在的同名临时表,同时更新TargetDate的值:

CREATE OR REPLACE TEMP TABLE tmp_date_var AS SELECT 
   '2023-02-20'::DATE AS TargetDate;  

方法2:先删除再创建临时表

先判断临时表是否存在,若存在则删除,再重新创建:

DROP TABLE IF EXISTS tmp_date_var;
CREATE TEMP TABLE tmp_date_var AS SELECT 
   '2023-02-20'::DATE AS TargetDate;  

方法3:使用会话级变量替代临时表

如果只是存储单个变量,不需要临时表的话,可以直接用Redshift的会话变量,更灵活:
设置变量:

SET TargetDate = '2023-02-20'::DATE;

在查询中引用变量:

SELECT current_setting('TargetDate')::DATE;

修改变量时直接重新执行SET语句即可,无需处理表的创建/删除逻辑。

内容的提问来源于stack exchange,提问作者SQL_NewBe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:11:06