PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Truncando todas as tabelas em um banco de dados Postgres


FrustratedWithFormsDesigner está correto, PL/pgSQL pode fazer isso. Aqui está o roteiro:
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;

Isso cria uma função armazenada (você precisa fazer isso apenas uma vez) que você pode usar posteriormente assim:
SELECT truncate_tables('MYUSER');