現在、関数内でpostgresqlデータベースユーザーを作成できません。 背景: 私はJava Swingアプリケーションを持っています。私の目標は、データベースユーザーを作成、変更、削除するためのメニューを開発することです。より安全なものにするために、私は役割 "usermanagement"を作成し、この役割のメンバーだけがユーザーを作成するために関数を使用することができます。ロールには「createuser」という権利が含まれていますPostgresqlで関数を持つユーザーを作成する
クエリは問題なく実行されますが、新しいユーザーは作成されません...だから私は何が問題なのか分かりません。
これは私が私の機能を使用しようとする方法である:
SELECT create_databaseuser(v_username := 'thisname' ,v_password := 'pwpwpw');
誰でも助けることができますか?ここで
が私のコードです:
-- Function: public.create_databaseuser(text, text)
-- DROP FUNCTION public.create_databaseuser(text, text);
CREATE OR REPLACE FUNCTION public.create_databaseuser(
v_username text,
v_password text)
RETURNS numeric AS
$BODY$
DECLARE
r_id numeric;
BEGIN
--CREATE ROLE v_username LOGIN
--PASSWORD 'v_password' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
EXECUTE 'CREATE USER ' || v_username || ' WITH PASSWORD ' || v_password;
-- Alternative:CREATE ROLE v_username LOGIN PASSWORD v_password NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
return 1;
-- Simple Exception
EXCEPTION
WHEN others THEN
RETURN 0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE SECURITY DEFINER
COST 100;
ALTER FUNCTION public.create_databaseuser(text, text)
OWNER TO postgres;
これは、兄弟姉妹サイトhttp://dba.StackExchange.com/ –