我已经看过一些地方,它显示了如何改变多个存储过程的定义器。我有一个SP'his_stored_procedure',我想将定义器从它设置到现在更改为不同的东西。
UPDATE `mysql`.`proc` p SET definer = 'YournewDefiner' WHERE definer='OldDefinerShownBefore'
我尝试了这个命令,它改变了任何有旧用户的程序的定义器。我希望能够在不改变其他SP的情况下更改一个SP的定义器。有没有办法隔离上面的查询?
答案 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';