首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >psycopg.errors.SyntaxError:使用execute时或接近"ON“的语法错误

psycopg.errors.SyntaxError:使用execute时或接近"ON“的语法错误
EN

Stack Overflow用户
提问于 2022-09-21 16:08:32
回答 1查看 37关注 0票数 0

我使用的是psycopg3和PostgreSQL 14。当我运行一个复制或exec函数并包含一个ON参数时,它会给出错误psycopg.errors.SyntaxError: syntax error at or near "ON"

我尝试了两个不同的函数,都导致了相同的错误。

代码语言:javascript
复制
 cur.execute("""
  CREATE TABLE temp_mls AS TABLE mls_properties WITH NO DATA
  ON COMMIT DROP
   """)

代码语言:javascript
复制
cur.copy("""COPY mls_properties (fips_code") FROM STDIN
            ON CONFLICT DO NOTHING
                """)
EN

回答 1

Stack Overflow用户

发布于 2022-09-21 18:19:07

https://www.postgresql.org/docs/current/sql-copy.html中没有“冲突”这个词。

显然,ON COMMIT DROP应该在事务中扭曲。但是,它只适用于临时表。来自手册的报价

在承诺 事务块末尾的临时表的行为可以在提交时进行控制。这三种选择是: 保存行 在交易结束时不采取任何特别行动。这是默认行为。 删除行 临时表中的所有行将在每个事务块的末尾删除。本质上,在每次提交时都会进行自动截断。 丢弃 临时表将被删除在当前事务块的末尾。

因此,以下内容将发挥作用:

代码语言:javascript
复制
BEGIN;
CREATE temp TABLE temp_mls ON COMMIT DROP AS table test WITH NO DATA;
COMMIT;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73803935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档