-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFunção Matador.sql
31 lines (30 loc) · 1.07 KB
/
Função Matador.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CREATE OR REPLACE FUNCTION PUBLIC.fn_killer_tables()
RETURNS VOID AS
$$
DECLARE
R_TABELA RECORD;
R_SEQUENCIA RECORD;
BEGIN
FOR R_TABELA IN (
/*BUSCA POR TODAS AS TABELAS NÃO-NATIVAS DO BANCO.*/
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA <> 'information_schema'
AND TABLE_SCHEMA <> 'pg_catalog'
AND TABLE_TYPE = 'BASE TABLE'
) LOOP
/*DELETE OS REGISTROS EM CASCADA DAS TABELAS NÃO-NATIVAS*/
RAISE NOTICE CONCAT('Matando todos os registros da TABELA: %', R_TABELA.TABLE_SCHEMA, '.', R_TABELA.TABLE_NAME);
EXECUTE CONCAT('TRUNCATE ', R_TABELA.TABLE_SCHEMA, '.', R_TABELA.TABLE_NAME, ' CASCADE';
END LOOP;
FOR R_SEQUENCIA IN (
SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME
FROM INFORMATION_SCHEMA.SEQUENCES
) LOOP
/*REINICIA O SEQUENCIAL DAS TABELAS*/
PERFORM SETVAL( CONCAT (R_SEQUENCIA.SEQUENCE_SCHEMA, '.', R_SEQUENCIA.SEQUENCE_NAME), 1, FALSE);
END LOOP;
RETURN;
RETURN;
END
$$ LANGUAGE plpgsql