创建 MySQL 存储过程时是否需要 `definer`?
mysqlmysqli database更新于 2025/4/22 22:36:17
否,创建存储过程时,definer 部分不是必需的。它用于创建定义器。
从 MySQL.user 表中检查所有用户和主机 −
mysql> select user,host from mysql.user;
以下是输出 −
+------------------+-----------+ | user | host | +------------------+-----------+ | Manish | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | Adam Smith | localhost | | User1 | localhost | | am | localhost | +------------------+-----------+ 9 rows in set (0.03 sec)
在这里,我们创建一个定义为 Adam Smith 创建存储过程的查询如下 −
mysql> delimiter // mysql> CREATE DEFINER = 'Adam Smith'@'localhost' procedure Sp_Definer() -> begin -> select 'Hello MySQL'; -> end; -> // Query OK, 0 rows affected (0.14 sec) mysql> delimiter ;
使用 CALL 命令调用存储过程。语法如下 −
CALL yourStoredProcedureName();
调用上述存储过程。
mysql> call Sp_Definer();
以下是输出。
+-------------+ | Hello MySQL | +-------------+ | Hello MySQL | +-------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
相关文章
有用资源
mysql 参考教程 - 该教程包含有关 mysql 的更多信息:https://www.cainiaomax.com/mysql/

