У меня есть имена таблиц, которые начинаются с подчеркивания _XXXXXXX 'среди других таблиц.Мне нужно создать пользователя, который сможет выполнять запросы только к этим таблицам «_XXXX» (ничего больше) без возможность просмотра / поиска других таблиц (не начиная с «_XXXXX»).
Как я могу сделать это в Postgres PSQL?:
Я пытался
GRANT SELECT ON TABLE "_*" TO username;
я получаю следующее:
ОШИБКА: отношение "_ *" неСуществуют
Любая помощь приветствуется.
Спасибо
, когда я выполняю этот код в редакторе запросов PgAdmin4:
DO
$$
DECLARE
r record;
BEGIN
FOR r IN SELECT c.relname,
n.nspname
FROM pg_class c
INNER JOIN pg_namespace n
ON n.oid = c.relnamespace
WHERE n.nspname = 'Schemas'
AND c.relkind = 'r'
AND c.relname LIKE '$_%'
ESCAPE '$' LOOP
EXECUTE 'GRANT SELECT ON "' || r.nspname || '"."' || r.relname || '" TO kpidata;';
END LOOP;
END;
$$
LANGUAGE plpgsql;
я получаю следующий ответи ничего не меняется (все еще имеют те же права доступа ко всем для созданного пользователя 'kpidata'). Я уверен, что это я, кто не понимает, как все работает
![enter image description here](https://i.stack.imgur.com/unKTj.png)
Моя структура БД выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/PqZ7F.png)