這是MySQL 5實力養成暨評量裡的8-16.『修改預儲程序使用者需要有下列何項權限?』
答案:(D) Alter Routine
這個錯誤起源於我們只認識Grant,顯然也不是全瞭解它的用途,還有就是Alter Routine為什麼是Routine而不是Procedure呢?我們就看看哪裡有出現過Alter Routine吧。
在MySQL GRANT及REVOKE語法我們有提過CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT權限適用於已存儲的子程序,而這個子程序等級看起來是在GRANT下的,所以GRANT是討論較大的範疇,而Update、Alter及ALTER ROUTINE則是GRANT下討論的權限選項。
在MySQL提供的權限的GRANT和REVOKE語句所用的涉及權限的名稱也有提到,ALTER ROUTINE是用在預儲的程式,原先預儲的程式是翻作保存的程式,這有點怪怪的,讓人無法理解,對照英文是stored routine,再細查才發現這是討論預儲程序(stored procedure)跟自訂函式(function)的,所以在接來也有一句『需要CREATE ROUTINE權限來建立預儲的程式(函式和程序),ALTER ROUTINE權限來更改和刪除預儲的程式,EXECUTE來執行預儲的程式。』因應翻譯的舒服,我們都改成預儲程式、函式及程序這樣可能比較好分辯的出來。
也因為如此,所以在MySQL自訂函式參數用法in會再提到『要在MySQL 5.1中建立子程式,必須具有CREATE ROUTINE權限,並且ALTER ROUTINE和EXECUTE權限被自動授予它的建立者。』
這裡翻的子程式查原文應該就是stored routines了,所以我們也應該改成預儲程式會較妥。
這樣子改譯,可以讓我們對GRANT跟ALTER ROUTINE有較清楚的理解。
1 則留言