DROP VIEW
Remove uma exibição do banco de dados. Várias exibições podem ser removidas com um único comando DROP VIEW. Esse comando é irreversível.
Privilégios obrigatórios
A seguir estão os privilégios obrigatórios para DROP VIEW:
-
Superusuário
-
Usuários com o privilégio DROP VIEW
-
Proprietário da exibição
Sintaxe
DROP VIEW [ IF EXISTS ] name [, ... ] [ CASCADE | RESTRICT ]
Parâmetros
- IF EXISTS
-
Cláusula que indica que, se a exibição especificada não existe, o comando não deve fazer alterações e deve retornar uma mensagem informando que a exibição não existe, em vez de encerrar com um erro.
Esta cláusula é útil durante scripting para que o script não falhe se o comando DROP VIEW for executado em uma exibição não existente.
- name
-
Nome da exibição a ser removida.
- CASCADE
-
Cláusula que indica que para remover automaticamente os objetos que dependem da exibição, como outras exibições.
Para criar uma exibição que não dependa de outros objetos de banco de dados, como exibições e tabelas, inclua a cláusula WITH NO SCHEMA BINDING na definição de exibição. Para obter mais informações, consulte CREATE VIEW.
Observe que, se você incluir CASCADE e a contagem de objetos de banco de dados descartados for dez ou mais, é possível que o cliente do banco de dados não liste todos os objetos descartados nos resultados resumidos. Isso geralmente ocorre porque as ferramentas do cliente SQL têm limitações padrão nos resultados exibidos.
- RESTRICT
-
Cláusula que indica que a exibição não se deve ser removida se contiver objetos que dependam dela. Esta ação é o padrão.
Exemplos
O exemplo a seguir remove a exibição chamada event:
drop view event;
Para remover uma exibição com dependências, use a opção CASCADE. Por exemplo, digamos que vamos começar com uma tabela chamada EVENT. Criamos a exibição eventview na tabela EVENT usando o comando CREATE VIEW, conforme mostrado no seguinte exemplo:
create view eventview as select dateid, eventname, catid from event where catid = 1;
Agora, criamos uma segunda exibição chamada myeventview, que se baseia na primeira exibição eventview:
create view myeventview as select eventname, catid from eventview where eventname <> ' ';
Neste momento, duas exibições foram criadas: eventview e myeventview.
A exibição myeventview é dependente daeventview, que é a exibição principal.
Para excluir a exibição eventview, o comando óbvio a ser usado é o seguinte:
drop view eventview;
Observe que se você executa o comando nesse caso, você recebe o seguinte erro:
drop view eventview; ERROR: can't drop view eventview because other objects depend on it HINT: Use DROP ... CASCADE to drop the dependent objects too.
Para resolver isso, execute o seguinte comando (como sugerido na mensagem de erro):
drop view eventview cascade;
Agora as exibições eventview e myeventview foram removidas com êxito.
O exemplo a seguir remove a exibição eventview se existir, ou não faz nada e retorna uma mensagem se a exibição não existir:
drop view if exists eventview;