Sébastien Clément Asked: 2015-07-15 08:22:40 +0800 CST2015-07-15 08:22:40 +0800 CST 2015-07-15 08:22:40 +0800 CST 如何允许用户运行函数,但不能访问函数正在访问的对象 772 我有一个 PL/PgSQL 存储过程,它对表 ( SELECT, UPDATE, INSERT, TRUNCATE) 执行各种操作。 我希望用户能够运行存储过程,而不是他们自己对表执行相同的操作。 那可能吗? stored-procedures postgresql 1 个回答 Voted Best Answer a_horse_with_no_name 2015-07-15T09:27:10+08:002015-07-15T09:27:10+08:00 是的,这是可能的。使用拥有所有这些表的用户创建函数并使用SECURITY DEFINER修饰符。 SECURITY DEFINER 指定该函数将以创建它的用户的权限执行。 create or replace function foo() returns void as $body$ ... $body$ language plpgsql security definer; 另请参阅手册中的示例: http ://www.postgresql.org/docs/current/static/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY
是的,这是可能的。使用拥有所有这些表的用户创建函数并使用
SECURITY DEFINER
修饰符。另请参阅手册中的示例:
http ://www.postgresql.org/docs/current/static/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY