Невозможно использовать переменную в качестве имени роли.
Я пытался создать функцию с триггером при вставке, чтобы выполнить несколько операторов предоставления для заданных идентификаторов.Я объявил некоторую переменную со значением 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"
оператор работает отлично.