使用存储过程实现删除多表操作。
-- 批量删除表, 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 感谢原作者!
转载于:https://blog.51cto.com/chengxuyuan/1669949