在建立 MySQL 儲存過程時是否需要 `definer`?
否,在建立儲存過程時,`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)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式語言
C++
C#
MongoDB
MySQL
Javascript
PHP