Как предоставить разрешения в Postgres для таблиц, которые начинаются с посылки? - PullRequest
2 голосов
/ 29 февраля 2020
GRANT UPDATE 
ON (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'parcel%') 
TO police;

1 Ответ

1 голос
/ 29 февраля 2020

GRANT принимает только фиксированные имена таблиц (или список таблиц). То, что вам нужно, требует dynamici c SQL, ie динамического построения оператора и его выполнения в анонимном блоке.

Обратите внимание:

do
$$
begin
    execute (
        select 
            'grant all on table '
            || string_agg (format('%I.%I', table_schema, table_name), ', ')
            || ' to police'
        from information_schema.tables
        where table_name like 'parcel%'
   )    ;
end
$$;
...