顧名思義,可載入函數必須先載入伺服器才能使用。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
權限。它會將函數新增至效能架構
user_defined_functions
表格,提供已安裝可載入函數的執行階段資訊。請參閱第 7.7.2 節,〈取得有關可載入函數的資訊〉。
可載入函數會在正常伺服器啟動序列期間自動載入:
會在
mysql.func
表格中註冊的函數。已安裝。在啟動時安裝的元件或外掛程式可能會自動安裝相關函數。
自動函數安裝會將函數新增至效能架構
user_defined_functions
表格,提供已安裝函數的執行階段資訊。
如果使用 --skip-grant-tables
選項啟動伺服器,則不會載入 mysql.func
表格中註冊的函數,且無法使用。這不適用於由元件或外掛程式自動安裝的函數。
若要移除可載入函數,請使用 DROP FUNCTION
陳述式。例如:
DROP FUNCTION metaphon;
DROP FUNCTION
有這些影響:
它會卸載函數,使其無法使用。
它會從
mysql.func
系統表格中移除函數。基於這個原因,DROP FUNCTION
需要mysql
系統資料庫的DELETE
權限。由於函數不再註冊於mysql.func
表格中,因此伺服器在後續重新啟動期間不會載入函數。它會從效能架構
user_defined_functions
表格中移除函數,該表格提供已安裝可載入函數的執行階段資訊。
DROP FUNCTION
無法用於刪除由元件或外掛程式自動安裝,而非使用 CREATE FUNCTION
安裝的可載入函數。此類函數也會在安裝它的元件或外掛程式解除安裝時自動刪除。
要重新安裝或升級與可載入函數相關聯的共享程式庫,請發出 DROP FUNCTION
陳述式,升級共享程式庫,然後發出 CREATE FUNCTION
陳述式。如果您先升級共享程式庫,然後使用 DROP FUNCTION
,伺服器可能會意外關閉。