注意事項
- マテリアライズドビューを個別に削除する場合、マテリアライズドビューはゴミ箱に移動されません。
- マテリアライズドビューのベーステーブルにマテリアライズドビューログが作成されている場合、ベーステーブルを削除する前にマテリアライズドビューログを削除する必要があります。そうでないとエラーが発生します。
権限要件
マテリアライズドビューを削除するには、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