ALTER FUNCTION
ALTER FUNCTION 语句用于更改存储函数的一个或多个特性。
ALTER FUNCTION 语句的语法如下:
ALTER FUNCTION func_name [characteristic ...]
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
ALTER FUNCTION 语句不能用于更改存储函数的参数或主体,如果需要进行此类更改,必须使用 DROP FUNCTION 和 CREATE FUNCTION 删除并重新创建函数。
您必须具有该函数的 ALTER ROUTINE 权限。默认情况下,该权限自动授予函数创建者。
有关例程使用数据的特性信息如下:
-
CONTAINS SQL表示例程不包含读写数据的语句,这是默认值。例如,SET@x=1或DO RELEASE_LOCK('abc')会被执行但既不读取也不写入数据。 -
NO SQL表示例程不包含 SQL 语句。 -
READS SQL DATA表示例程包含读取数据的语句(例如SELECT),但不包含写入数据的语句。 -
MODIFIES SQL DATA表示例程包含可能写入数据的语句(例如INSERT或DELETE)。
SQL SECURITY 可以是 DEFINER 或 INVOKER,来指定例程是使用指定用户(此用户必须具有访问与例程关联的数据库的权限)的权限执行,还是使用调用者的权限执行。默认值为 DEFINER。调用例程的用户必须具有该例程的 EXECUTE 权限。
ALTER FUNCTION 的示例如下:
ALTER FUNCTION my_func LANGUAGE SQL READS SQL DATA COMMENT '示例';
Query OK, 0 rows affected