如果 PostgreSQL 中存在另一个 table,如何使用 IF 语句删除 1 table
How to delete 1 table if another table exists in PostgreSQL using IF-statements
我正在尝试编写一个 deletes/drops 一个 table 的查询,如果另一个 table 存在:
DO
$do$
BEGIN
IF EXISTS (SELECT FROM table1) THEN
DELETE FROM table2;
END IF;
END
$do$;
但是如果 table2 存在而不是 table 本身,它所做的只是从 table1 中删除行。
你可以使用类似于上面的函数吗?如果存在,我应该使用 drop table 吗?
delete/drop a table if another table exists
那就是:
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
从 table 不是检查它是否存在的正确方法 - 如果不存在,则会引发错误。相反,您可以查询信息模式。
删除一个table,你要drop table
;另一方面,delete
删除 table 的内容,而不是 table 本身。
我正在尝试编写一个 deletes/drops 一个 table 的查询,如果另一个 table 存在:
DO
$do$
BEGIN
IF EXISTS (SELECT FROM table1) THEN
DELETE FROM table2;
END IF;
END
$do$;
但是如果 table2 存在而不是 table 本身,它所做的只是从 table1 中删除行。
你可以使用类似于上面的函数吗?如果存在,我应该使用 drop table 吗?
delete/drop a table if another table exists
那就是:
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
从 table 不是检查它是否存在的正确方法 - 如果不存在,则会引发错误。相反,您可以查询信息模式。删除一个table,你要
drop table
;另一方面,delete
删除 table 的内容,而不是 table 本身。