У меня есть следующие настройки:
create role test_user noinherit nologin;
create table test_me ( attr text );
create view v_test_me as select * from test_me;
create function fn() returns trigger language plpgsql as $$
begin
insert into test_me(attr) values (NEW.attr);
return NEW;
end; $$;
create trigger tg instead of insert on v_test_me
for each row execute procedure fn();
grant insert on v_test_me to test_user;
set role test_user;
insert into v_test_me(attr) values ('hello?');
Здесь у меня есть таблица и вид сверху.Представление имеет вместо триггера.Я разрешаю test_user
вставить в представление.Но я получаю следующую ошибку:
ERROR: permission denied for table test_me
CONTEXT: SQL statement "insert into test_me(attr) values (NEW.attr)"
Похоже, у меня нет разрешения на выполнение оператора insert
в таблице test_me
, что ожидается.Можно ли как-то разрешить пользователю вставлять в таблицу test_me
, не предоставляя им такого разрешения напрямую?