【问题标题】:How can I determine if a postgres temporary table was created? [duplicate]如何确定是否创建了 postgres 临时表? [复制]
【发布时间】:2020-05-13 22:00:30
【问题描述】:

在运行查询创建临时表(如果它不存在)时,我如何确定是否实际创建了新表?

例如,如果我使用CREATE TEMP TABLE IF NOT EXISTS name 创建一个临时表,如果创建了新表,我是否可以让查询返回某些内容?

在我的具体情况下,在创建临时表后,我运行另一个查询以将一些数据复制到其中,因此我需要确保仅在重新创建临时表时才复制数据(例如,如果表被删除由于某些瞬间连接丢失或其他原因)。我正在使用 psycopg2。

【问题讨论】:

  • 这能回答你的问题吗? How to check if a table exists in a given schema
  • 不,不是因为我认为这个答案不适用于临时表
  • 最终我使用了 SELECT EXISTS ( SELECT 1 FROM information_schema.tables WHERE table_schema like 'pg_temp_%' AND table_name=LOWER('table_name') )

标签: python database postgresql psycopg2 create-table


【解决方案1】:

您应该在执行查询“CREATE TABLE IF NOT EXISTS”之前测试您的表是否存在。例如这个查询:

    SELECT 1 
    FROM information_schema.tables 
    WHERE table_schema='YourShema' AND table_name='TableName';

如果表之前不存在,这意味着她是在之后创建的! ;)

另一种解决方案是不使用“IF NOT EXISTS”指令并在表已存在时捕获异常。

【讨论】:

  • 我已经编辑了这个问题以使其与临时表有关,因为此查询不能用于测试临时表是否存在(我测试过)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多