Извините, если это неправильное место, чтобы задать этот вопрос.
Я создал функцию, которая вставляет значения во многие таблицы, и я хочу, чтобы веб-интерфейс выполнял эту функцию. Я предоставил разрешение на выполнение роли входа в веб-интерфейс, но я не хочу, чтобы код веб-интерфейса мог вставлять значения непосредственно в таблицы, я хочу, чтобы веб-интерфейс использовал только ту функцию, которую я создали для этого.
Если я даю разрешение на выполнение для роли входа в веб-интерфейс, но не предоставляю разрешения на вставку таблиц, которые вставляются в функцию, возникает ошибка доступа.
Как я могу это сделать?
У вас должна быть другая роль, которая имеет права писать прямо в таблицы. Затем вы создаете функцию, используя эту другую роль, и добавляете к определению функции пункт «SECURITY DEFINER». Затем вы предоставляете выполнение этой функции своей веб-роли.
Вы можете прочитать об этом в документация.
Вы также можете проверить Сообщение блога что я однажды написал о защите базы данных.