ALTER VIEW

Atomically replace a view with a new view defined by a SELECT statement. ALTER VIEW is an online operation and will not cause concurrently executing queries to fail.

Syntax

ALTER
    [DEFINER = { <user> | CURRENT_USER }]
    [SCHEMA_BINDING = { ON | OFF }]
    VIEW <view_name>
    AS <select_statement>

Remarks

  • ALTER VIEW atomically replaces view <view_name> with a new view defined by <select_statement>.

  • ALTER VIEW privileges are granted only to the designer of the view and to SUPER users. If a SUPER user alters a view, that user commandeers ALTER privileges from the designer of the view.

  • The DEFINER clause (ALTER DEFINER = <user>@<host> VIEW <viewname> AS SELECT ...) specifies the user that should be used for security checks when a view is referenced by a query. The default value is CURRENT_USER.

  • When SCHEMA_BINDING is set to ON, objects referenced by the view cannot be dropped if the view exists; you need to drop the view before dropping these objects. By default, SCHEMA_BINDING is set to OFF.

  • The user who runs ALTER DEFINER..VIEW must have the SUPER permission.

  • Refer to the Permission Matrix for the required permission.

Examples

ALTER VIEW view_name AS SELECT * FROM table_name WHERE user_id = "real_person";

Related Topics

Last modified: February 1, 2023

Was this article helpful?