時(shí)間:2024-02-09 10:40作者:下載吧人氣:21
Postgresql如何批量修改函數(shù)擁有者,默認(rèn)創(chuàng)建的函數(shù)對(duì)象的擁有者為當(dāng)前創(chuàng)建的用戶,如果使用postgres超級(jí)管理員創(chuàng)建一個(gè)test()的函數(shù),擁有者就是postgres用戶。下面講解下如何批量修改擁有者。
本文演示的Postgresql版本如下:
PostgreSQL 9.6.8
要查詢Postgresql的函數(shù)和函數(shù)參數(shù)需要使用函數(shù)視圖和參數(shù)視圖,分別記錄了函數(shù)信息和參數(shù)列表信息。
視圖一: information_schema.routines
視圖routines包含當(dāng)前數(shù)據(jù)庫(kù)中所有的函數(shù)。只有那些當(dāng)前用戶能夠訪問(wèn)(作為擁有者或具有某些特權(quán))的函數(shù)才會(huì)被顯示。需要用到的列如下,完整視圖講解請(qǐng)參考官方文檔。
名稱 | 數(shù)據(jù)類型 | 備注 |
---|---|---|
specific_schema | sql_identifier | 包含該函數(shù)的模式名 |
routine_name | sql_identifier | 該函數(shù)的名字(在重載的情況下可能重復(fù)) |
specific_name | sql_identifier | 該函數(shù)的”專用名”。這是一個(gè)在模式中唯一標(biāo)識(shí)該函數(shù)的名稱,即使該函數(shù)真正的名稱已經(jīng)被重載。專用名的格式尚未被定義,它應(yīng)當(dāng)僅被用來(lái)與指定例程名稱的其他實(shí)例進(jìn)行比較。 |
視圖二: information_schema.parameters
視圖parameters包含當(dāng)前數(shù)據(jù)庫(kù)中所有函數(shù)的參數(shù)的有關(guān)信息。只有那些當(dāng)前用戶能夠訪問(wèn)(作為擁有者或具有某些特權(quán))的函數(shù)才會(huì)被顯示。需要用到的列如下,完整視圖講解請(qǐng)參考官方文檔。
名稱 | 數(shù)據(jù)類型 | 備注 |
---|---|---|
parameter_name | sql_identifier | 參數(shù)名,如果參數(shù)沒(méi)有名稱則為空 |
udt_name | sql_identifier | 該參數(shù)的數(shù)據(jù)類型的名字 |
ordinal_position | cardinal_number | 該參數(shù)在函數(shù)參數(shù)列表中的順序位置(從 1 開(kāi)始計(jì)數(shù)) |
specific_name | cardinal_number | 該函數(shù)的”專用名”。詳見(jiàn)第 35.40 節(jié)。 |
注意:可以通過(guò)routines. specific_name 和 parameters.specific_name字段關(guān)聯(lián)查詢。
如果需要修改的函數(shù)只有一個(gè),請(qǐng)執(zhí)行如下SQL語(yǔ)句即可:
如果需要修改的函數(shù)只有一個(gè),請(qǐng)執(zhí)行如下SQL語(yǔ)句即可:
// 無(wú)參數(shù)函數(shù)
ALTER FUNCTION “abc”.”test”() OWNER TO “dbadmin”;
//帶參數(shù)函數(shù)
ALTER FUNCTION “abc”.”test3″(p1 varchar, p2 varchar) OWNER TO “dbadmin”;
網(wǎng)友評(píng)論