Database Oracle数据库:如何限制用户只查看自己的数据?

Database Oracle数据库:如何限制用户只查看自己的数据?,database,plsql,oracle11g,Database,Plsql,Oracle11g,例如,我有这样一个表: +-----------------------------+ | sample_table | +-----------------------------+ | col_1 | col_2 | col_3 | +------------------------

例如,我有这样一个表:

                 +-----------------------------+
                 |        sample_table         |
                 +-----------------------------+
                 |  col_1  |  col_2  |  col_3  |
                 +-----------------------------+
User_1 Entered : |'val_1_1'|'val_1_2'|'val_1_3'|
                 +-----------------------------+
User_2 Entered : |'val_2_1'|'val_2_2'|'val_2_3'|
                 +-----------------------------+
现在我想知道,如果上述每个用户都发出以下查询:

Select * from sample_table
结果 对于
用户_1
请:

+-----------------------------+
|  col_1  |  col_2  |  col_3  |
+-----------------------------+
|'val_1_1'|'val_1_2'|'val_1_3'|
+-----------------------------+
+-----------------------------+
|  col_1  |  col_2  |  col_3  |
+-----------------------------+
|'val_2_1'|'val_2_2'|'val_2_3'|
+-----------------------------+
对于
用户_2
应:

+-----------------------------+
|  col_1  |  col_2  |  col_3  |
+-----------------------------+
|'val_1_1'|'val_1_2'|'val_1_3'|
+-----------------------------+
+-----------------------------+
|  col_1  |  col_2  |  col_3  |
+-----------------------------+
|'val_2_1'|'val_2_2'|'val_2_3'|
+-----------------------------+
限制每个用户仅访问(选择更新删除)其数据的好方法是什么?(所有用户都可以插入数据,但我只能查看或修改他们的数据)。谢谢你的回答和指导。
注意:我的意思是
数据库用户
,但如果有人也能为
应用程序用户
提供解决方案,我们将不胜感激。

将数据所有者字段添加到由用户函数填充的表中。不允许直接访问该表。所有访问都是通过一个视图进行的,该视图只公开与查询该视图的用户值相匹配的行。视图上的“代替”触发器可以使用用户函数来控制DML

create view Sample as
select col_1, col_2, col3
from   Sample_Table
where  Data_Owner = USER;

对于应用程序用户,而不是用户,只需使用UDF,该UDF提供应用程序用户名或用户(如果没有)。当然,细节将取决于你如何维护应用程序用户名。

你需要明确它是
应用程序
用户还是
数据库
用户?Hello@LalitKumarB,我是说“数据库”用户,但如果我也想知道“应用程序”用户的最佳方式,我现在就编辑帖子,除非您将输入数据的用户存储在表中,否则以后无法将其过滤掉。因此,您必须将“所有者”列添加到tableCheck Oracle功能:。但是,这也要求您的数据包含由@a_horse_和_no_name所指出的用户输入的数据。感谢您的想法,我以前见过这种机制,但没有审查它,也没有注意到它,无论如何,感谢您的回答。