Sql server 特定数据库表寄存器权限
我将用Begging的一个例子来解释这一点: 我有一个“database.dbo.table1”表,其中包含以下数据:Sql server 特定数据库表寄存器权限,sql-server,permissions,Sql Server,Permissions,我将用Begging的一个例子来解释这一点: 我有一个“database.dbo.table1”表,其中包含以下数据: **userID | amount | Units** 1 | 300 | 2 2 | 150 | 2 3 | 120 | 1 1 | 80 | 16 3 | 130 | 8 我在数据库中为存在的每个用户ID创建了1个用户: user_1 user_2 user_3 这正是我想要的。我想知道
**userID | amount | Units**
1 | 300 | 2
2 | 150 | 2
3 | 120 | 1
1 | 80 | 16
3 | 130 | 8
我在数据库中为存在的每个用户ID创建了1个用户:
user_1
user_2
user_3
这正是我想要的。我想知道,如果用户1想要从database.dbo.table1中选择*select,那么用户只需要看到以下内容:
**userID | amount | Units**
1 | 300 | 2
1 | 80 | 16
没有看到来自其他用户的数据
?我可以使用数据库授予的权限来执行此操作吗?设置一个条件,例如如果是执行选择的用户_1,则在userID='1'时只给他数据
或许
?每次用户想要在后台进行选择和更改时,我都可以使用触发器执行此操作
这是我第一次必须根据登录的用户从寄存器上的表depending中分离信息
请帮助并非常感谢您实现这一点的最简单方法可能是创建如下视图
CREATE VIEW `database.dbo.table1_user1` AS SELECT *
FROM `database.dbo.table1`
WHERE **userID = 1;
对于每个用户。您还具有更改权限,因此用户只能访问此视图
如果用户不直接访问数据库,则可以通过编程方式解决此问题
更新
还可以为所有用户创建一个视图,并使用当前的用户函数mysql
然后CREATE语句将如下所示
CREATE VIEW `database.dbo.table1_view` AS SELECT *
FROM `database.dbo.table1`
WHERE **userID = SUBSTRING(CURRENT_USER(), 6, 1);
感谢jarlh注意到这种可能性除了使用视图之外,SQL Server还支持使用视图,这是一种很好的方法,它可以根据用户筛选行,而无需引入视图。这是什么RDBMS?RDBMS是Microsoft SQL Server MSM?在当前用户条件下,为什么不是所有用户的一个通用视图?我同意,这也是一个有效的解决方案,我将把它添加到答案中@jarlh如何将当前用户ass条件放入句子中?加入一个单独的表,存储所有用户及其用户ID。