首页 > 解决方案 > 如何确定是否创建了 postgres 临时表?

问题描述

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

例如,如果我创建一个临时表,如果创建了CREATE TEMP TABLE IF NOT EXISTS name新表,我可以让查询返回一些东西吗?

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

标签: pythondatabasepostgresqlpsycopg2create-table

解决方案


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

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

如果该表之前不存在,则表示她是在之后创建的!;)

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


推荐阅读