首页 > 解决方案 > 如何在 postgresql 中创建一个在表上创建策略的函数

问题描述

我想在多个表上创建策略。由于有很多表并且它们都应该具有相同的策略(> 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内部函数。

标签: postgresqlfunctionpolicy

解决方案


推荐阅读