我需要一个查询,可以针对用户的 Postgres 数据库运行,并确定他们是否有权创建过程/函数?它只需要一个查询,因为这是我分发的软件的启动检查,用户会将其连接到他们自己的数据库,这些数据库有时是共享的,而他们没有过程权限。
我需要一种仅使用 SQL 的方法来判断他们是否能够使用CREATE FUNCTION
。文档中指出:
为了能够创建函数,您必须对参数类型和返回类型具有 USAGE 权限。
我尝试使用这个 SQL,但我不确定它是否有用”
SELECT * FROM information_schema.role_usage_grants
WHERE grantee = 'postgres';
postgres postgres prism_v4 information_schema cardinal_number DOMAIN USAGE YES
postgres postgres prism_v4 information_schema character_data DOMAIN USAGE YES
postgres postgres prism_v4 information_schema sql_identifier DOMAIN USAGE YES
postgres postgres prism_v4 information_schema time_stamp DOMAIN USAGE YES
postgres postgres prism_v4 information_schema yes_or_no DOMAIN USAGE YES
在 MySQL 中我可以使用SHOW GRANTS FOR CURRENT_USER();
并检查CREATE_ROUTINE