gpt4 book ai didi

postgresql - 在函数 postgresql 中使用变量作为角色名称

转载 作者:行者123 更新时间:2023-11-29 13:40:27 25 4
gpt4 key购买 nike

不能使用变量作为角色名

我尝试在插入时使用触发器创建函数,女巫为给定的 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$;

关于postgresql - 在函数 postgresql 中使用变量作为角色名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56251692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com