Как создать функцию в postgresql, которая создает политики для таблиц - PullRequest
0 голосов
/ 23 января 2019

Я хотел бы создать политики для нескольких таблиц.Поскольку существует много таблиц, и все они должны иметь одинаковые политики (> 200), я хотел бы создать функцию, которую я мог бы вызывать.

Это политика, которую я хотел бы создать

create policy policy_name on table_name for all to user_name using (column = 'some_value');

Но поскольку существует много таблиц, я хотел бы создать такую ​​функцию:

create or replace function add_policy(text, text, text) RETURNS void AS $$
    create policy $1 on table1 for all to $2 using (column = $3);
    create policy $1 on table2 for all to $2 using (column = $3);
    ...
    create policy $1 on tablen for all to $2 using (column = $3);

$$ LANGUAGE SQL

Я хотел бы иметь возможность назвать это так:

DO $$ BEGIN
    PERFORM add_policy('somepolicyname', 'someusername', 'valuetomatch');
END $$;

Я пробовал несколько версий этого, но я просто не могу найти способ сделать create policy внутри функции.

...