将行级安全性扩展到桥接表

问题描述

我正在研究数据库中的行级安全性。我有两张桌子。基于行的安全性是在data_table上实现的,并且仅返回用户可以看到的行。

数据表:

data_id    name        role
-----------------------------
1          test        USER
2          another     ADMIN
3          yep         USER

type_table:

type_id    name
-----------------
1          this
2          is
3          a
4          type
EXECUTE AS USER = 'USER';
SELECT * FROM data_table;

仅返回第1行和第3行。如果以ADMIN执行,则返回所有行。这在我的数据库中正常工作。

但是,我的问题是我的桥接表。

数据类型表:

data_type_id    data_id    type_id
1               1          2
2               1          3
3               2          1
4               2          2
5               3          1
6               3          4

截至目前

EXECUTE AS USER = 'USER';
SELECT COUNT(data_type_id) FROM data_type_table;

返回6,因为它正在查看表中的所有6行。我正在尝试以这样的方式进行设置:用户USER将只看到data_type_table中的行,这些行引用的是data_table.role ='USER'的行(这意味着选择计数查询将返回4)。实现这样的最简单的方法是什么?

我的data_table很可能包含数十万行。效率可能会成为问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...