使用存储过程实现删除多表操作。

-- 批量删除表, schema: cat_fish
CREATE OR REPLACE FUNCTION batch_del_tables()
RETURNS int AS
$$
DECLARE
    r RECORD;
    count int;
BEGIN
    count := 0;
-- 创建 表
FOR r IN SELECT tablename FROM pg_tables where tablename like 'os_%' LOOP
    RAISE NOTICE 'tablename: %', r.tablename;
    EXECUTE 'DROP TABLE cat_fish.' || r.tablename || ' CASCADE';
    count := count + 1;
END LOOP;
 
RETURN count;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;
 
-- SELECT batch_del_tables();

postgres系统表pg_tables存储数据库中所有的表, 删除多表的思路:

通过系统表pg_tables查询所有需要删除的表名(like 'os_%'),然后循环执行删除操作 "DROP TBALE tbname"。


本文转自:http://my.oschina.net/meowmeow/blog/193361 感谢原作者!