不能使用变量作为角色名称
我试图在插入时创建带有触发器的函数,对给定的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"
陈述非常有效。
答案 0 :(得分:0)
尝试:
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$;