Postgres的official docs表示使用SECURITY DEFINER定义的功能以创建的用户的权限运行。
但是其他来源(例如here和here)声称它是该功能的所有者的特权。
哪个是对的?
(适用于9.4 +)
答案 0 :(得分:10)
通常(最初)创作者是所有者。但是,如果功能的所有者已更改,则security definer
适用于新所有者。每the documentation:
new_owner - 该函数的新所有者。请注意,如果该功能标记为SECURITY DEFINER,它将随后作为新所有者执行。