1

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

DO
$do$
BEGIN
   IF  EXISTS (SELECT FROM table1) THEN
      DELETE  FROM table2;
    END IF;
END
$do$;

但它所做的只是从 table1 中删除行,如果 table2 存在而不是表本身。

您可以使用类似于上述功能的功能,还是应该使用 drop table(如果存在)?

4

1 回答 1

1

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

那将是:

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从表中获取不是检查它是否存在的正确方法 - 如果不存在,则会引发错误。相反,您可以查询信息架构。

  • 删除一张桌子,你想要drop tabledelete,另一方面,删除表格的内容,而不是表格本身。

于 2020-10-04T14:11:39.903 回答