Can't use variable as role name
I tried to create function with trigger on insert, witch perform some grant statements for given id's. I declared some variable with id value and have to use it as role name.
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();
When I add new row i have error message ERROR: role "id" does not exist. If I replace id to "valid.user":
GRANT USAGE ON SCHEMA zakupy TO "valid.user"
statement works perfectly.