我试图删除表,如果它存在于PostgreSQL的当前工作数据库中.我正在try 以下查询.

Example:

var1 := 'IF EXISTS (select * from INFORMATION_SCHEMA.TABLES WHERE name = ''Table_'|| Suffix ||''') then
      DROP TABLE Table_'||Suffix||'';

execute var1;

但误差接近IF.

推荐答案

execute执行SQL语句,而不是PL/pgSQL命令.IF语句是PL/pgSQL构造.

在任何情况下,你都可以使用

DROP TABLE IF EXISTS ...

(见the manual page for DROP).

Postgresql相关问答推荐

函数返回查询执行plpgsql时不存在列

使用多个分隔符拆分SQL

在同一 Select 列表中两次使用jsonb_arrayElements()是否安全?

尽管违反了部分索引约束,Postgres 插入仍在发生

INSERT 语句返回策略违规(USING 表达式)

JOOQ:数据库版本早于 COCKROACHDB 支持的方言:13.0.0

这个 Supbase 查询在 SQL ( Postgresql ) 中的类似功能是什么

Postgres 低估了导致错误查询计划的行数

JPA findBy 字段忽略大小写

Rails Migration 使用转换将字符串转换为整数

如何在 PSQL 中查找从另一个表继承的子表

计算 PostgreSQL 中给定 GPS 坐标的日出和日落时间

为 Django Postgres 连接强制 SSL

无法安装 psycopg2 Ubuntu

Postgres NOT IN (null) 没有结果

返回 array_agg() 中的第一个元素

将 csv 文件中存在的 NULL 值复制到 postgres

使用 RPostgreSQL 写入特定模式

如何使用 PostgreSQL 触发器来存储更改(SQL 语句和行更改)

Postgresql 用随机值更新每一行