Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2012-02-05) 如何快速删除postgresql数据库所有的表

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

在postgesql中建立一个函数:

CREATE OR REPLACE FUNCTION truncate_tables(username IN VARCHAR) RETURNS void AS $$
DECLARE

statements CURSOR FOR      
    SELECT tablename FROM pg_tables      
    WHERE tableowner = username AND schemaname = 'public';      

BEGIN

FOR stmt IN statements LOOP      
    EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.tablename) || ' CASCADE;';      
END LOOP;      

END;
$$ LANGUAGE plpgsql;

然后调用:

select truncate_tables('username')

即可。

可以在单元测试中使用这个方法用于初始化,很方便

comments powered by Disqus