如果PostgreSQL中存在另一个表,如何使用if语句删除1个表

如果PostgreSQL中存在另一个表,如何使用if语句删除1个表,postgresql,drop,Postgresql,Drop,如果存在另一个表,我尝试编写一个删除/删除表的查询: DO $do$ BEGIN IF EXISTS (SELECT FROM table1) THEN DELETE FROM table2; END IF; END $do$; 但它所做的只是在表2存在的情况下从表1中删除行,而不是从表本身中删除行 您可以使用类似于上面的函数吗?如果存在,我应该使用drop table吗 如果存在另一个表,则删除/删除该表 这将是: do $$ begin if exis

如果存在另一个表,我尝试编写一个删除/删除表的查询:

DO
$do$
BEGIN
   IF  EXISTS (SELECT FROM table1) THEN
      DELETE  FROM table2;
    END IF;
END
$do$;
但它所做的只是在表2存在的情况下从表1中删除行,而不是从表本身中删除行

您可以使用类似于上面的函数吗?如果存在,我应该使用drop table吗

如果存在另一个表,则删除/删除该表

这将是:

do $$
begin
    if exists(select 1 from information_schema.tables where table_schema = current_schema() and table_name = 'table1') then
    drop table table2;
  end if;
end; $$ language plpgsql;
理由:

  • select
    ing from a table不是检查表是否存在的正确方法-如果不存在,则会引发错误。相反,您可以查询信息模式

  • 要删除表格,您需要
    删除表格
    <代码>删除,另一方面,删除表的内容,而不是表本身


是的!这非常有效,只需在信息和表格周围添加引号!谢谢。我想知道,select后面的1是什么意思?