CREATE VIEW 语法是
CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
Run Code Online (Sandbox Code Playgroud)
因为SECURITY您可以设置DEFINER或INVOKER。什么时候选择“定义器”才有意义?据我了解,这意味着检查我的安全权限,即创建视图的人。如果我对我们的数据库拥有完全权限,那么我只是创建了一个视图,为任何调用者提供完全访问权限。这听起来不对。难道您不总是希望安全性是实际使用视图的人吗?