首批通过分布式安全可靠测评,为关键业务系统打造
删除物化视图
更新时间:2026-02-18 10:41:50
注意事项
- 单独删除物化视图的时候,物化视图不进回收站。
- 物化视图的基表上如果创建了物化视图日志,需要先删除基表上的物化视图日志,才能删除基表,否则报错。
权限要求
删除物化视图需要有 DROP TABLE 权限。更多有关 OceanBase 数据库权限的详细介绍,请参见 MySQL 模式下的权限分类。
语法
DROP MATERIALIZED VIEW [IF EXISTS] materialized_view_list [opt_drop_behavior];
materialized_view_list:
[ database. ]materialized_view [,[ database. ]materialized_view]...
opt_drop_behavior:
RESTRICT | CASCADE
参数说明
| 参数 | 描述 |
|---|---|
| IF EXISTS | 可选项,如果指定 IF EXISTS,即使要删除的物化视图不存在,也不会报错;如果不指定,要删除的物化视图不存在则会报错。 |
| database. | 可选项,指定物化视图所在的数据库。如果省略 database.,则默认在您自己的数据库中。 |
| materialized_view | 指定物化视图的名称。 |
| RESTRICT | CASCADE | 可选项,表示删除操作的行为。
|
示例
以下将展示创建物化视图、查询物化视图及删除物化视图的信息。
创建表
test_tbl1作为物化视图的基表。CREATE TABLE test_tbl1 (col1 INT PRIMARY KEY, col2 VARCHAR(20), col3 INT);基于表
test_tbl1创建名为mv_test_tbl1的物化视图。CREATE MATERIALIZED VIEW mv_test_tbl1(PRIMARY KEY (col1)) AS SELECT col1, col2 FROM test_tbl1;在物化视图
mv_test_tbl1上创建物化视图日志。CREATE MATERIALIZED VIEW LOG ON mv_test_tbl1 WITH PRIMARY KEY (col2) INCLUDING NEW VALUES;基于物化视图
mv_test_tbl1创建物化视图(嵌套物化视图)mv_mv_test_tbl1。CREATE MATERIALIZED VIEW mv_mv_test_tbl1 AS SELECT col1 FROM mv_test_tbl1;查看当前所有物化视图信息。
SELECT owner, mview_name, container_name, query, refresh_mode FROM oceanbase.DBA_MVIEWS;返回结果如下:
+---------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+--------------+ | owner | mview_name | container_name | query | refresh_mode | +---------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+--------------+ | db_test | mv_mv_test_tbl1 | mv_mv_test_tbl1 | select `mv_test_tbl1`.`col1` AS `col1` from `db_test`.`mv_test_tbl1` `mv_test_tbl1` | DEMAND | | db_test | mv_test_tbl1 | mv_test_tbl1 | select `db_test`.`test_tbl1`.`col1` AS `col1`,`db_test`.`test_tbl1`.`col2` AS `col2` from `db_test`.`test_tbl1` | DEMAND | +---------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+--------------+ 2 rows in set删除物化视图
mv_mv_test_tbl1。DROP MATERIALIZED VIEW mv_mv_test_tbl1;返回结果如下:
Query OK, 0 rows affected删除物化视图
mv_test_tbl1。注意
物化视图的基表上如果创建了物化视图日志,需要先删除基表上的物化视图日志,才能删除基表,否则报错。
DROP MATERIALIZED VIEW mv_test_tbl1;返回结果如下:
ERROR 1235 (0A000): drop table required by materialized view refresh is not supported删除物化视图
mv_test_tbl1上的物化视图日志。DROP MATERIALIZED VIEW LOG ON mv_test_tbl1;返回结果如下:
Query OK, 0 rows affected再次删除物化视图
mv_test_tbl1。DROP MATERIALIZED VIEW mv_test_tbl1;返回结果如下:
Query OK, 0 rows affected