DROP VIEW

On this page Carat arrow pointing down

The DROP VIEW statement removes a view from a database.

Note:

The DROP VIEW 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

DROP MATERIALIZED VIEW IF EXISTS view_name_list CASCADE RESTRICT

Parameters

Parameter Description
MATERIALIZED Drop a materialized view.
IF EXISTS Drop the view if it exists; if it does not exist, do not return an error.
view_name_list A comma-separated list of view names. To find view names, use:

SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
CASCADE Drop 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.

icon/buttons/copy
> SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
  table_catalog | table_schema |  table_name   | table_type | is_insertable_into | version
----------------+--------------+---------------+------------+--------------------+----------
  bank          | public       | user_accounts | VIEW       | NO                 |       2
  bank          | public       | user_emails   | VIEW       | NO                 |       1
(2 rows)
icon/buttons/copy
> DROP VIEW bank.user_emails;
DROP VIEW
icon/buttons/copy
> SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
  table_catalog | table_schema |  table_name   | table_type | is_insertable_into | version
----------------+--------------+---------------+------------+--------------------+----------
  bank          | public       | user_accounts | VIEW       | NO                 |       4
(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.
icon/buttons/copy
> SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
  table_catalog | table_schema |  table_name   | table_type | is_insertable_into | version
----------------+--------------+---------------+------------+--------------------+----------
  bank          | public       | user_accounts | VIEW       | NO                 |       2
  bank          | public       | user_emails   | VIEW       | NO                 |       1
(2 rows)
icon/buttons/copy
> DROP VIEW bank.user_accounts;
ERROR: cannot drop relation "user_accounts" because view "user_emails" depends on it
SQLSTATE: 2BP01
icon/buttons/copy
> DROP VIEW bank.user_accounts CASCADE;
DROP VIEW
icon/buttons/copy
> SELECT * FROM information_schema.tables WHERE table_type = 'VIEW';
  table_catalog | table_schema | table_name | table_type | is_insertable_into | version
----------------+--------------+------------+------------+--------------------+----------
(0 rows)

See also


Yes No
On this page

Yes No