sql >> データベース >  >> RDS >> PostgreSQL

関数を変更する権限をユーザーに付与する

    ALTER FUNCTIONのマニュアル それについては明らかです:

    大胆な強調鉱山。
    関数を作成するには、いくつかの基本的な権限も必要です。 ドキュメントごと:

    簡単な解決策は、スーパーユーザーとして関数に変更を加えることです。 。 (デフォルトのスーパーユーザーはpostgresです 、ただし、すべてのユーザーが スーパーユーザーになります。)

    場合 本当にすべての機能の所有権を変更する必要があります。これでうまくいきます:

    SELECT string_agg('ALTER FUNCTION '
                || quote_ident(n.nspname) || '.' 
                || quote_ident(p.proname) || '(' 
                || pg_catalog.pg_get_function_identity_arguments(p.oid)
                || ') OWNER TO foo;'
              , E'\n') AS _sql
    FROM   pg_catalog.pg_proc p
    JOIN   pg_catalog.pg_namespace n ON n.oid = p.pronamespace
    WHERE  n.nspname = 'public';
    -- AND p.relowner <> (SELECT oid FROM pg_roles WHERE rolname = 'foo')
    -- AND p.proname ~~ 'f_%'
    

    publicに制限されています スキーマ。
    詳細と説明については、dba.SEに関するこのより完全な回答
    また密接に関連している:
    パラメータの数/タイプを知らなくても機能を削除しますか?




    1. カーソルの基になるアクティブなクエリを表示する方法

    2. 単一のステートメントに関するトランザクションは何をしますか?

    3. NULL値との比較

    4. java.lang.OutOfMemoryError:SqliteAndroidからデータを読み取っているときに[メモリが使い果たされました]