如何一举丢掉许多(但不是全部)桌子?

时间:2014-03-18 20:24:27

标签: sql postgresql sql-drop

我有一个包含许多表的数据库。其中12个表以相同的前缀开头:

mystuff_table_1
mystuff_table_2
mystuff_table_3
mystuff_table_4
etc...

我不想一遍又一遍地输入DROP TABLE mystuff_table_n CASCADE;,特别是因为我必须反复删除表格。我怎样才能让生活更轻松?

1 个答案:

答案 0 :(得分:1)

您可以创建一个自动执行此操作的过程:

尝试:

CREATE OR REPLACE FUNCTION public.p_drop_tables (
  p_start integer,
  p_end integer,
  p_table varchar
)
RETURNS void AS
$body$
DECLARE SQL VARCHAR := '';
BEGIN

FOR i IN p_start..p_end LOOP

SQL := 'DROP TABLE public.' || p_table || i || ';';

--RAISE NOTICE '%',SQL;

EXECUTE (SQL);

END LOOP; 

END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;

ATT