为了调试目的,我在函数中放置了很多 RAISE NOTICE。我认为这会影响性能,所以应该在生产环境中删除它们。有没有办法仅在特定条件下选择退出这些日志记录/断言功能?
我是 PostgreSQL 的新手,正在配置一个新数据库。
我写了几个间接访问(读/写)数据的函数,我想禁止所有对表的直接访问。
GRANT CONNECT ON DATABASE db1 TO role1;
GRANT USAGE ON SCHEMA schema1 TO role1;
REVOKE ALL ON table1 FROM role1;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA schema1 TO role1;
Run Code Online (Sandbox Code Playgroud)
如果我不 REVOKE 表权限,将允许直接表访问。如果我 REVOKE 表特权和 GRANT 函数,用户访问这些函数但看到表访问限制错误。
psql:./test1.psql:6: ERROR: permission denied for relation table1
Run Code Online (Sandbox Code Playgroud)
如何让用户role1只能使用函数访问数据,同时禁止对表的所有直接访问?我想我错过了一些东西,但我无法弄清楚。
PS 我使用的是 Postgres 9.2.x。