domingo, 23 de novembro de 2014

Função para limpar todas as tabelas do Banco de dados PostgreSQL

Para criar a função:
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;
Para chamar a função:
select truncate_tables('postgres');
ATENÇÃO: Tome muito cuidado ao utilizar essa função!!!!!

3 comentários:

  1. Caro Eder, parabéns pelo blog, muito didático!

    Você aqui neste tópico informa prá tomar muito cuidado com a função.

    Porquê?

    Att,
    Antonio Marcos

    ResponderExcluir
    Respostas
    1. Bom dia Antonio,

      A Observação de "tomar muito cuidado" é apenas por que irá limpar todas as informações de todas as tabelas do banco de dados, se for executado o comando indevidamente em um banco de dados "errado" pode gerar um grande transtorno.
      Acredito que se prestar bem atenção na qual banco está executando, não terá problemas.

      Muito obrigado,

      Att
      Eder

      Excluir
  2. omo apagar parte do registro de tabela de um período especifico.
    por ex no mysql temos a seguinte expressão.

    delete from tc_events where servertime < DATE(NOW() – INTERVAL 180 day);

    significa que estou apagando tudo o que for superior a esse tempo, quero deixar o registro dos ultimos 180 dias no banco de dados.

    como deveria estar?
    obrigado!

    ResponderExcluir