重命名mysql过程

Posted

技术标签:

【中文标题】重命名mysql过程【英文标题】:Rename a mysql procedure 【发布时间】:2012-11-18 15:24:56 【问题描述】:

有谁知道重命名mysql存储过程/函数的语法是什么?或者这甚至在 MySQL 中得到支持?我已经在谷歌上搜索了几分钟...

【问题讨论】:

这里记录了forums.mysql.com/read.php?10,274538,274563#msg-274563 作为一种解决方法。可以在此处找到要重命名的存储过程 youdidwhatwithtsql.com/rename-mysql-stored-procedures/819 。如果 bugs.mysql.com/bug.php?id=27793 仍然有效,那么 2007 年提交的功能请求显然仍处于打开状态。 【参考方案1】:

试试这个

 UPDATE `mysql`.`proc`
SET name = '<new_proc_name>',
specific_name = '<new_proc_name>'
WHERE db = '<database>' AND
  name = '<old_proc_name>';

另请注意:如果已为此过程授予用户权限,您还需要更新 procs_priv 中的过程名称。

UPDATE `mysql`.`procs_priv`
SET Routine_name = '<new_proc_name>'
WHERE Db = '<database>' AND
  Routine_name = '<old_proc_name>';
 FLUSH PRIVILEGES;

来源:MySQL Forums :: Newbie :: Rename Stored Procedure Syntax

【讨论】:

您需要任何特定权限来更改该表吗?' 这个语句有没有变种,不需要指定数据库名,直接使用活动数据库? @Gruber,是的——只需使用函数DATABASE() 获取当前数据库名称,并将其作为条件附加:UPDATE mysql.proc SET name = ..., specific_name = ... WHERE name = ... AND db = DATABASE() 另外不要忘记更改存储过程的调用者事件:每 60 秒按计划更改事件 event_RunSP1 DO call ;

以上是关于重命名mysql过程的主要内容,如果未能解决你的问题,请参考以下文章

重命名数据库名称 - mysql [关闭]

如何在mysql中重命名数据库? [复制]

在 MySQL 中重命名表

在 MySQL 中重命名外键列

在 MySQL 中重命名外键列

​oracle存储过程怎样重命名,除了用or replace 还有什么