обновить данные в таблице UPDATE public.kato SET name = 'Иванов И,И,',
WHERE id = 'feec22f9-f62d-46f4-a55b-aaf93657ec2b'
2. К нему прилетает ошибка ERROR: must be owner of materialized view grst_kato_explain
Где: SQL statement "REFRESH MATERIALIZED VIEW grst_kato_explain"
PL/pgSQL function _grst_kato_refresh() line 3 at SQL statement
3. У пользователя user1 есть доступы на таблицы и представления (SELECT, UPDATE и т.д.), но я не хочу делать его владельцем таблицы и представления.
4. Что делать как обойти?
Вот это вот: > PL/pgSQL function _grst_kato_refresh() это триггерная функция, так? Если да, см. SECURITY DEFINER в документации — особенно https://www.postgresql.org/docs/current/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY
да разобрался спасибо. Теперь я думаю нужно все функции обновить) интересно можно ли написать скрипт, который добавит во все функции строку
Эээ... в смысле "все"? Большинство функций в норме как раз не должны быть такими (каждая такая — потенциальный риск для безопасности). А так — сгенерировать (и выполнить) нужные: ALTER FUNCTION <function> SECURITY DEFINER SET search_path = 'secure_schema', 'pg_temp'; несложно, вроде...
разрабы не парились и все делали под суперадмином
Обсуждают сегодня