DROP VIEW

The DROP VIEW statement removes a view from a database.

Note:

This statement performs a schema change. For more information about how online schema changes work in CockroachDB, see Online Schema Changes.

Required privileges

The user must have the DROP privilege on the specified view(s). If CASCADE is used to drop dependent views, the user must have the DROP privilege on each dependent view as well.

Synopsis

DROPVIEWIFEXISTStable_name,CASCADERESTRICT

Parameters

ParameterDescription
IF EXISTSDrop the view if it exists; if it does not exist, do not return an error.
tablenameA comma-separated list of view names. To find view names, use:SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
CASCADEDrop other views that depend on the view being dropped.CASCADE does not list views it drops, so should be used cautiously.
RESTRICT(Default)_ Do not drop the view if other views depend on it.

Examples

Remove a view (no dependencies)

In this example, other views do not depend on the view being dropped.

  1. > SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
  1. +---------------+-------------------+--------------------+------------+---------+
  2. | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | VERSION |
  3. +---------------+-------------------+--------------------+------------+---------+
  4. | def | bank | user_accounts | VIEW | 1 |
  5. | def | bank | user_emails | VIEW | 1 |
  6. +---------------+-------------------+--------------------+------------+---------+
  7. (2 rows)
  1. > DROP VIEW bank.user_emails;
  1. DROP VIEW
  1. > SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
  1. +---------------+-------------------+--------------------+------------+---------+
  2. | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | VERSION |
  3. +---------------+-------------------+--------------------+------------+---------+
  4. | def | bank | user_accounts | VIEW | 1 |
  5. +---------------+-------------------+--------------------+------------+---------+
  6. (1 row)

Remove a view (with dependencies)

In this example, another view depends on the view being dropped. Therefore, it's only possible to drop the view while simultaneously dropping the dependent view using CASCADE.

Warning:
CASCADE drops all dependent views without listing them, which can lead to inadvertent and difficult-to-recover losses. To avoid potential harm, we recommend dropping objects individually in most cases.

  1. > SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
  1. +---------------+-------------------+--------------------+------------+---------+
  2. | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | VERSION |
  3. +---------------+-------------------+--------------------+------------+---------+
  4. | def | bank | user_accounts | VIEW | 1 |
  5. | def | bank | user_emails | VIEW | 1 |
  6. +---------------+-------------------+--------------------+------------+---------+
  7. (2 rows)
  1. > DROP VIEW bank.user_accounts;
  1. pq: cannot drop view "user_accounts" because view "user_emails" depends on it
  1. > DROP VIEW bank.user_accounts CASCADE;
  1. DROP VIEW
  1. > SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
  1. +---------------+-------------------+--------------------+------------+---------+
  2. | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | VERSION |
  3. +---------------+-------------------+--------------------+------------+---------+
  4. | def | bank | create_test | VIEW | 1 |
  5. +---------------+-------------------+--------------------+------------+---------+
  6. (1 row)

See also

Was this page helpful?
YesNo