一尘不染

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

sql

我知道我可以使用视图来授予对表中属性子集的访问权限。但是,如何只授予对特定元组的访问权限?假设我有一个注册学生的表格,一个用户名属性,然后是诸如degree_status之类的其他名称,我如何授予访问权限,以便用户A只能从该表中选择一个与用户名A相对应的元组?我有一个数据库考试,正在研究一些以前的论文,遇到了这个问题,但是我不知道该如何回答,我在《
Dtabase System:数据库设计的实用方法》一书中找不到解决方法。 ,实施和管理”

谢谢任何帮助,万分感谢!

马特


阅读 160

收藏
2021-03-08

共1个答案

一尘不染

说您得到了:

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();

用户可以从该视图中选择,但不能删除限制权限的WHERE和JOIN。

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

2021-03-08