PostgreSQL:允许执行函数(插入到表中),但没有权限直接插入

对不起,如果这是错误的地方问这个问题。

我创build了一个函数,将值插入到许多表中,我希望Web前端执行此function。 我已经授予了对Web前端loginangular色的执行权限,但我不希望Web前端代码能够直接将值插入到表中,我希望Web前端仅使用I为此创造了。

如果我为Web前端的loginangular色授予执行权限,但是我不授予插入到函数中的表的插入权限,则会发生访问错误。

我怎样才能解决这个问题?

你必须有另一个angular色,有权直接写入表。 然后使用这个另一个angular色创build函数,并添加到函数定义“SECURITY DEFINER”子句中。 然后你授予这个函数执行到你的webangular色。

您可以在文档中阅读更多信息。

您可能还想查看我曾经写过的有关保护数据库的博文 。