使用存储过程实现删除多表操作。
-- 批量删除表, 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 感谢原作者!