在数据库视图中应用动态where条件(oracle-12c,mysql 5 +)

问题描述 投票:0回答:1

我可以使用动态的“ WHERE”子句创建视图吗?将根据用户和某些条件构建此where子句

这是我的交易表

+--------+----------+------------+
| Job ID | Customer | Department |
+--------+----------+------------+
| 1      | ABC      | Tanker     |
| 2      | ABC      | Dry        |
| 3      | MEX      | Tanker     |
| 4      | MEX      | Dry        |
+--------+----------+------------+
  • 用户A-要求查看所有交易
  • 用户B-要求查看油轮部门的所有交易
  • 用户C-要求查看Tanker部门的所有交易,但属于客户ABC

我的用户明智的设置具有标题详细信息

[Access key-这是我用来过滤数据的每个段的二进制代码(第一个位置是部门,第二个是客户,0表示全部,1表示选择/限制访问)]]

标题:

+------+------------+
| User | Access key |
+------+------------+
| A    | 00         |
| B    | 10         |
| C    | 11         |
+------+------------+

详细信息表:

+------+------------+--------+
| User |   Segment  | Value  |
+------+------------+--------+
| B    | Department | Tanker |
| C    | Department | Tanker |
| C    | Customer   | ABC    |
+------+------------+--------+

现在,我需要根据上述用户明智的设置来过滤数据。我可以在用户的​​基础上动态构建where子句,然后通过select查询传递并执行它,而不是固定视图中的where子句以获取数据?请帮助,我有2个数据库(MySQL和Oracle)

也欢迎归档此要求的替代建议。

我可以使用动态的“ WHERE”子句创建视图吗?将根据用户和某些条件构建此where子句。这是我的事务处理表:+ -------- + ---------- + ----------- -+ |职位编号| ...

mysql oracle view
1个回答
0
投票

对于Oracle,这听起来像是虚拟专用数据库的用例:https://docs.oracle.com/database/121/DBSEG/vpd.htm

© www.soinside.com 2019 - 2024. All rights reserved.