Mysql
即使伺服器中有儲存函式,Mysql.func 表中也沒有記錄
當我在我的一個 mysql 伺服器中創建使用者定義的函式時,它不會在 mysql.func 表中創建任何行。即使我的 mysql 伺服器中有多個函式,這個表是空的。有人可以解釋一下為什麼它沒有被記錄。每當我們創建任何儲存過程時,它都應該像 mysql.proc 表一樣創建行。我正在使用 mysql 5.5.40。提前致謝。
所有儲存過程和儲存函式,其程式碼都是用 MySQL 儲存過程語言編寫的,都駐留在
mysql.proc
.你可以看到每個有多少
SELECT COUNT(1) rowcount,type FROM mysql.proc GROUP BY type;
我見過的唯一一次
mysql.func
是在函式的上下文中AGGREGATE
:根據MySQL 文件
CREATE FUNCTION Syntax for User-Defined Functions
AGGREGATE 函式的工作方式與原生 MySQL 聚合(匯總)函式如 SUM 或 COUNT() 完全相同。要使 AGGREGATE 起作用,您的 mysql.func 表必須包含一個類型列。如果你的 mysql.func 表沒有這個列,你應該執行mysql_upgrade程序來創建它(參見第 4.4.7 節,“mysql_upgrade - 檢查和升級 MySQL 表”)。
我的猜測是
mysql.func
儲存AGGREGATE
函式而不是正常函式。顯然,您將在 C/C++ 中創建一些 UDF,並mysql.func
使用CREATE AGGREGATE FUNCTION
語法將其註冊。