更改DEFINER的具体存储过程到位?

时间:2014-08-05 19:48:49

标签: mysql stored-procedures

我已经看过一些地方,它显示了如何改变多个存储过程的定义器。我有一个SP'his_stored_procedure',我想将定义器从它设置到现在更改为不同的东西。

UPDATE `mysql`.`proc` p SET definer = 'YournewDefiner' WHERE definer='OldDefinerShownBefore'

我尝试了这个命令,它改变了任何有旧用户的程序的定义器。我希望能够在不改变其他SP的情况下更改一个SP的定义器。有没有办法隔离上面的查询?

1 个答案:

答案 0 :(得分:0)

我想你可以过滤为where子句添加更多条件,以限制更改哪个定义器。

update `mysql`.`proc` set `definer`='yournewdefiner' where name='yourstoredprocedurename'
and db='yourdatabasename';

我不能说你是否应该这样做,但是拥有完整的权利我能够以这种方式更新特定存储过程的定义者。

我建议在更新前先用select选中匹配的记录。同样要在更新后确认更改。

   select * from `mysql`.`proc` where name='yourstoredprocedurename'
    and db='yourdatabasename';