The DROP COLUMN statement is part of ALTER TABLE and removes columns from a table.

Synopsis

ALTER TABLE IF EXISTS table_name DROP COLUMN IF EXISTS name CASCADE RESTRICT

Required Privileges

The user must have the CREATE privilege on the table.

Parameters

Parameter Description
table_name The name of the table with the column you want to drop.
name The name of the column you want to drop.
CASCADE Drop the column even if objects (such as views) depend on it; drop the dependent objects, as well.

CASCADE does not list objects it drops, so should be used cautiously.

However, CASCADE will not drop dependent indexes; you must use DROP INDEX. This also prevents CASCADE from dropping columns with Foreign Key constraints.
RESTRICT (Default) Do not drop the column if any objects (such as views) depend on it.

Examples

Drop Columns

If you no longer want a column in a table, you can drop it.

> ALTER TABLE orders DROP COLUMN billing_zip;

Prevent Dropping Columns with Dependent Objects (RESTRICT)

If the column has dependent objects, such as views, CockroachDB will not drop the column by default; however, if you want to be sure of the behavior you can include the RESTRICT clause.

> ALTER TABLE orders DROP COLUMN customer RESTRICT;
pq: cannot drop column "customer" because view "customer_view" depends on it

Drop Column & Dependent Objects (CASCADE)

If you want to drop the column and all of its dependent options, include the CASCADE clause.

CASCADE does not list objects it drops, so should be used cautiously.
> SHOW CREATE VIEW customer_view;
+---------------+----------------------------------------------------------------+
|     View      |                          CreateView                            |
+---------------+----------------------------------------------------------------+
| customer_view | CREATE VIEW customer_view AS SELECT customer FROM store.orders |
+---------------+----------------------------------------------------------------+
> ALTER TABLE orders DROP COLUMN customer CASCADE;
> SHOW CREATE VIEW customer_view;
pq: view "customer_view" does not exist

See Also



Yes No