我有一个员工表......这个表有 5列(empname,empgsm,empsal,empaddr,empdep) ......它有 10条记录。我已经创建了 10个用户,相当于表中的empnames列。当用户使用他的empname登录时,用户名&密码,他只能从表中看到他的记录。
e.g。 Smith是一名员工,创建了一个名为smith的用户。当此用户处于会话状态时,类型"Select * from Employee_table"
他只获取属于他的记录,其中empname为smith。
如何使用权限执行此操作?
答案 0 :(得分:1)
我的建议是在表格上创建视图,其中包含基于当前用户名的条件,如下所示:
select * from employee t
where sys_context('USERENV','SESSION_USER') = t.empname`enter code here
答案 1 :(得分:1)
从标签sqlplus我猜你正在使用Oracle。
在Oracle中,您可以使用细粒度访问控制(即虚拟专用数据库)执行此操作。它的工作原理是在任何sql语句中添加where子句。
如果你有一个基于模式的应用程序,你也可以自己添加一个where子句(其中username = user)。这可能不太安全,但足以满足许多用例
当前登录用户的Oracle用户名在变量“user”中可用。
答案 2 :(得分:0)