sql - 向 PostgreSQL 上的用户授予对表子集的访问权限

标签 sql database postgresql privileges sql-grant

我知道我可以使用 View 来授予对表中属性子集的访问权限。但是我怎样才能只授予对特定元组的访问权限呢?假设我有一个注册学生表,一个用户名属性,然后是其他一些像 degree_status,我如何授予访问权限,以便用户 A 只能从表中选择与用户名 A 对应的元组?我有一个数据库考试,我正在研究一些过去的论文,我遇到了这个问题,但我不知道如何回答它,我无法从我的书“Dtabase System:数据库设计的实用方法”中找到如何做, 实现与管理'

非常感谢任何帮助!

马特

最佳答案

说你得到了:

Table items (item_id, ...)
Table users (user_id, ...)
Table users_permissions( user_id, item_id, perm_type )

你可以像这样创建一个 View :

SELECT i.*, p.perm_type 
FROM items JOIN users_permissions USING (item_id) 
WHERE user_id = get_current_user_id();

用户可以从此 View 中进行选择,但不能删除限制权限的 WHERE 和 JOIN。

get_current_user_id() 函数可能是主要问题;)

关于sql - 向 PostgreSQL 上的用户授予对表子集的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6004357/

相关文章:

sql - 链接服务器在 SQL Server 作业上失败

java - 如何在 java 中查询带空格的 Postgresql 表

ruby-on-rails - 将 ActiveRecord 查询转换为 PostgreSQL 查询

php - 当需要配置控制时,我应该如何存储多个相关模型?

database - SAP hana是否支持增量备份

postgresql - 从 docker compose 启动的容器无法连接到另一个容器

sql - 在 sql 中跟踪记录随时间的更新有哪些最佳实践?

sql - 每个项目的最大日期

sql - 如何从日期时间 SQL 中仅选择年份

java - Play Framework 和 DB2