如果存在另一个表,我正在尝试编写一个删除/删除表的查询:
DO
$do$
BEGIN
IF EXISTS (SELECT FROM table1) THEN
DELETE FROM table2;
END IF;
END
$do$;
但它所做的只是从 table1 中删除行,如果 table2 存在而不是表本身。
您可以使用类似于上述功能的功能,还是应该使用 drop table(如果存在)?
如果存在另一个表,我正在尝试编写一个删除/删除表的查询:
DO
$do$
BEGIN
IF EXISTS (SELECT FROM table1) THEN
DELETE FROM table2;
END IF;
END
$do$;
但它所做的只是从 table1 中删除行,如果 table2 存在而不是表本身。
您可以使用类似于上述功能的功能,还是应该使用 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
从表中获取不是检查它是否存在的正确方法 - 如果不存在,则会引发错误。相反,您可以查询信息架构。
删除一张桌子,你想要drop table
;delete
,另一方面,删除表格的内容,而不是表格本身。