如果表的记录少于 n 则删除表
Posted
技术标签:
【中文标题】如果表的记录少于 n 则删除表【英文标题】:Drop table if it has less than n records 【发布时间】:2016-03-21 18:40:31 【问题描述】:我正在尝试使用postgres
,但无法让这个简单的查询工作:
drop table mytable if (select count(*) from mytable)<50 ;
这给出了错误:
ERROR: syntax error at or near "if"
LINE 1: drop table tablename if (select count(*) from mytable)<50 ;
在给定条件下如何更改/删除 postgres 中的表?
【问题讨论】:
Postgres 不支持DROP TABLE
上的WHERE
或IF
子句:postgresql.org/docs/current/static/sql-droptable.html。
为什么要这样做?但要回答您的问题,请将drop
放在if
之后。在互联网上询问陌生人之前,请先阅读文档。
【参考方案1】:
为此创建动态 SQL 有效(参见 answer)-
do
$$
declare
l_count integer;
begin
select count(*)
into l_count
from pg_class c
join pg_namespace nsp on c.relnamespace = nsp.oid
where c.relname = 'mytable'
and nsp.nspname = 'public';
if l_count < 50 then
execute 'drop table mytable';
end if;
end;
$$
【讨论】:
以上是关于如果表的记录少于 n 则删除表的主要内容,如果未能解决你的问题,请参考以下文章
请问TRUNCATE TABLE 与 DELETE在删除整个表的所有记录时的区别