13.1.31 DROP VIEW 構文

DROP VIEW [IF EXISTS]
    view_name [, view_name] ...
    [RESTRICT | CASCADE]

DROP VIEW は、1 つ以上のビューを削除します。各ビューに対する DROP 権限が必要です。引数リストで指定されているいずれかのビューが存在しない場合、MySQL は削除できなかった存在しないビューを名前で示すエラーを返しますが、リスト内の存在しているすべてのビューの削除も行います。

IF EXISTS 句は、存在しないビューに対してエラーが発生しないようにします。この句が指定されている場合は、存在しないビューごとに NOTE が生成されます。セクション13.7.5.41「SHOW WARNINGS 構文」を参照してください。

RESTRICTCASCADE (指定されている場合) は解析されますが、無視されます。


User Comments
  Posted by Denis TRUFFAUT on June 3, 2012
A short explanation about multi drop view statements :

-- CREATE view1
CREATE OR REPLACE ALGORITHM=MERGE VIEW view1 AS
SELECT id FROM mytable WHERE id < 5
WITH CHECK OPTION;

-- DROP view2 (not existing) and view1 (existing)
DROP VIEW view2, view1;

-- Do some statements after drop
SELECT id FROM mytable LIMIT 0,5

---------------------------------

-- Now, what happens ?

-- An error is generated for view2
-- (ERROR 1146 (42S02) at line 2: Table 'mydatabase.view1' doesn't exist)

-- view1 is dropped

-- It means, that even if a drop fail in a multi drop view statement, other drops are executed, independently. That is a noticeable particularity.

-- Execution is stopped

-- Of course, if a multi drop view statement fails, other statements after it (create, drop, select, alter...) will not be executed, as expected.

Tested with 5.6.4-m7-log.
Sign Up Login You must be logged in to post a comment.