跳到主要内容

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 FUNCTIONCREATE FUNCTION 删除并重新创建函数。

您必须具有该函数的 ALTER ROUTINE 权限。默认情况下,该权限自动授予函数创建者。

有关例程使用数据的特性信息如下:

  • CONTAINS SQL 表示例程不包含读写数据的语句,这是默认值。例如,SET@x=1DO RELEASE_LOCK('abc') 会被执行但既不读取也不写入数据。

  • NO SQL 表示例程不包含 SQL 语句。

  • READS SQL DATA 表示例程包含读取数据的语句(例如 SELECT),但不包含写入数据的语句。

  • MODIFIES SQL DATA 表示例程包含可能写入数据的语句(例如 INSERTDELETE)。

SQL SECURITY 可以是 DEFINERINVOKER,来指定例程是使用指定用户(此用户必须具有访问与例程关联的数据库的权限)的权限执行,还是使用调用者的权限执行。默认值为 DEFINER。调用例程的用户必须具有该例程的 EXECUTE 权限。

ALTER FUNCTION 的示例如下:

ALTER FUNCTION my_func LANGUAGE SQL READS SQL DATA  COMMENT '示例';
Query OK, 0 rows affected