如名稱所示,可載入函數必須先載入伺服器,才能使用。MySQL 支援伺服器啟動期間的自動函數載入,以及之後的手動載入。
在載入可載入函數時,關於它的資訊可用,如第 7.7.2 節,「取得關於可載入函數的資訊」所述。
若要手動載入可載入函數,請使用 CREATE FUNCTION
陳述式。例如
CREATE FUNCTION metaphon
RETURNS STRING
SONAME 'udf_example.so';
檔案基本名稱取決於您的平台。常見的後綴名在 Unix 和類 Unix 系統中為 .so
,在 Windows 中為 .dll
。
CREATE FUNCTION
具有以下效果
它將函數載入伺服器,使其立即可用。
它在
mysql.func
系統表格中註冊函數,使其在伺服器重新啟動後保持存在。因此,CREATE FUNCTION
需要mysql
系統資料庫的INSERT
權限。它將函數新增至 Performance Schema
user_defined_functions
表格,該表格提供關於已安裝可載入函數的執行階段資訊。請參閱第 7.7.2 節,「取得關於可載入函數的資訊」。
在伺服器正常啟動順序期間會發生可載入函數的自動載入
將安裝在
mysql.func
表格中註冊的函數。在啟動時安裝的組件或外掛程式可能會自動安裝相關的函數。
自動函數安裝會將函數新增至 Performance Schema
user_defined_functions
表格,該表格提供關於已安裝函數的執行階段資訊。
如果伺服器是以 --skip-grant-tables
選項啟動,則不會載入在 mysql.func
表格中註冊的函數,而且無法使用。這不適用於由組件或外掛程式自動安裝的函數。
若要移除可載入函數,請使用 DROP FUNCTION
陳述式。例如
DROP FUNCTION metaphon;
DROP FUNCTION
具有以下效果
它會解除載入函數,使其無法使用。
它會從
mysql.func
系統表格中移除函數。因此,DROP FUNCTION
需要mysql
系統資料庫的DELETE
權限。由於該函數不再註冊在mysql.func
表格中,伺服器在後續重新啟動期間不會載入該函數。它會從效能綱要(Performance Schema)的
user_defined_functions
表格中移除該函數,該表格提供關於已安裝可載入函數的執行時資訊。
無法使用 DROP FUNCTION
來刪除由元件或外掛程式自動安裝,而非透過使用 CREATE FUNCTION
安裝的可載入函數。當安裝它的元件或外掛程式解除安裝時,此類函數也會自動刪除。
若要重新安裝或升級與可載入函數相關聯的共用程式庫,請發出 DROP FUNCTION
陳述式,升級共用程式庫,然後發出 CREATE FUNCTION
陳述式。如果您先升級共用程式庫,然後使用 DROP FUNCTION
,伺服器可能會意外關閉。