Em 4 de fevereiro de 2014 17:09, [email protected] <[email protected]
br> escreveu:

Boa tarde, 
 
Quero excluir views que estão em um campo de uma tabela.
 
como se fosse
 
drop view (select campo from tabela);
 
e excluir todas as views que contém no campo.
 
tem como?
 
Att,
 
Erlon




_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral





cara veja se te ajuda, achei no google e ajustei..


BEGIN TRANSACTION;
    DO $$DECLARE r record;
         DECLARE s TEXT;
        BEGIN
            FOR r IN select
c.table_schema,c. table_name
from information_schema.tables t
inner join information_schema.columns c on c.table_catalog = t.table_catalog
and c.table_schema = t.table_schema and c.table_name = t.table_name
left join information_schema.key_column_usage u on c.table_catalog = u
table_catalog and c.table_schema = u.table_schema and c.table_name = u
table_name and c.column_name = u.column_name
where  t.table_type='VIEW' and c.table_schema not like '%pg%' and c
table_schema ='dah' C.COLUMN_NAME like 'hash%'
group by 1,2
            LOOP
                s := 'DROP VIEW ' ||  quote_ident(r.table_schema) || '.' ||
quote_ident(r.table_name) || ';';




                EXECUTE s;


                RAISE NOTICE 's = % ',s;


            END LOOP;
        END$$;
    ROLLBACK TRANSACTION;


ajuste  alterando o schema, campo e faça numa tabela de teste


-- 



Douglas Fabiano Specht


>>>>>>>>>>>>>>>>>
Funcionou certinho douglas, obrigado... como ficou meu comando :


BEGIN TRANSACTION;
    DO $$DECLARE r record;
         DECLARE s TEXT;
        BEGIN
            FOR r IN  select * from information_schema.tables where
table_name like '%busca%'
            LOOP
                s := 'DROP VIEW ' ||  quote_ident(r.table_schema) || '.' ||
quote_ident(r.table_name) || ';';

                EXECUTE s;
                RAISE NOTICE 's = % ',s;


            END LOOP;
        END$$;
    commit TRANSACTION;

eu tinha views geradas no banco de dados já com o filtro, isso agiliza puxar os 
dados para o sistema, e como são muitos dados, se 2 usuários fizessem o filtro 
quase ao mesmo tempo, puxava os dados que o ultimo filtrou, assim fiz views que 
tinham um prefixo + nome do usuario,,, para eu poder excluir elas, em cada 
cliente era diferente, com esse comando, filtrando pelo prefixo consigo fazer 
um comando que exclua em qualquer cliente.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a