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

Snowflake中用CTE创建临时表报错及语法疑问求助

Snowflake临时表创建语法错误及ON COMMIT参数说明

语法错误解决

你遇到的Unexpected 'CREATE'错误,是因为把CREATE TEMPORARY TABLE语句放在了CTE的定义上下文里,Snowflake不支持这种写法。以下是两种正确的写法:

写法1:先定义CTE,再创建临时表

WITH CTE AS (
  -- 替换成你的CTE实际查询逻辑
  SELECT column1, column2 FROM your_source_table
)
CREATE TEMPORARY TABLE NET_AVAIL AS
SELECT * FROM CTE;

写法2:将CTE嵌入到CREATE TABLE的查询中

CREATE TEMPORARY TABLE NET_AVAIL AS
WITH CTE AS (
  SELECT column1, column2 FROM your_source_table
)
SELECT * FROM CTE;

ON COMMIT PRESERVE ROWS是否需要添加?

不需要额外添加,因为Snowflake临时表的默认行为就是ON COMMIT PRESERVE ROWS:

  • 临时表是会话级的,只要当前会话未断开,无论执行COMMIT还是ROLLBACK,表结构和数据都会保留,直到会话结束或你显式执行DROP TABLE NET_AVAIL。
  • 只有当你需要临时表在事务提交后自动清空数据(但表结构仍在会话中保留)时,才需要指定ON COMMIT DELETE ROWS。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:13:17