在函数 postgresql 中使用变量作为角色名称
Use variable as role name in function postgresql
不能使用变量作为角色名
我尝试创建带有插入触发器的函数, 对给定的 ID 执行一些授权语句。我声明了一些具有 id 值的变量,并且必须将其用作角色名称。
CREATE OR REPLACE FUNCTION permissions() RETURNS trigger
LANGUAGE plpgsql
AS $permissions$
DECLARE
id varchar := NEW."id"; --this variable will contain user name ex. "valid.user"
BEGIN
GRANT USAGE ON SCHEMA zakupy TO id;
RETURN NEW;
END;
$permissions$;
CREATE TRIGGER permissions_insert AFTER INSERT ON public.permissions FOR EACH ROW EXECUTE PROCEDURE permissions();
当我添加新行时出现错误消息错误:角色 "id" 不存在。
如果我将 id 替换为 "valid.user":
GRANT USAGE ON SCHEMA zakupy TO "valid.user"
声明完美无缺。
试试这个:
CREATE OR REPLACE FUNCTION permissions() RETURNS trigger
LANGUAGE plpgsql
AS $permissions$
DECLARE
id varchar := NEW."id"; --this variable will contain user name ex. "valid.user"
BEGIN
execute 'GRANT USAGE ON SCHEMA zakupy TO "'||id||'"';
RETURN NEW;
END;
$permissions$;
不能使用变量作为角色名
我尝试创建带有插入触发器的函数, 对给定的 ID 执行一些授权语句。我声明了一些具有 id 值的变量,并且必须将其用作角色名称。
CREATE OR REPLACE FUNCTION permissions() RETURNS trigger
LANGUAGE plpgsql
AS $permissions$
DECLARE
id varchar := NEW."id"; --this variable will contain user name ex. "valid.user"
BEGIN
GRANT USAGE ON SCHEMA zakupy TO id;
RETURN NEW;
END;
$permissions$;
CREATE TRIGGER permissions_insert AFTER INSERT ON public.permissions FOR EACH ROW EXECUTE PROCEDURE permissions();
当我添加新行时出现错误消息错误:角色 "id" 不存在。 如果我将 id 替换为 "valid.user":
GRANT USAGE ON SCHEMA zakupy TO "valid.user"
声明完美无缺。
试试这个:
CREATE OR REPLACE FUNCTION permissions() RETURNS trigger
LANGUAGE plpgsql
AS $permissions$
DECLARE
id varchar := NEW."id"; --this variable will contain user name ex. "valid.user"
BEGIN
execute 'GRANT USAGE ON SCHEMA zakupy TO "'||id||'"';
RETURN NEW;
END;
$permissions$;