相同的查询,不同的结果(取决于用户的权限)

gue*_*tli 0 permissions sql-standard

关于 SQL 的一般问题:

如果两个用户执行同一个sql语句,有没有可能user1和user2得到不同的结果?

想象一下 user1 比 user2 拥有更多的权限。

换句话说:user1 有可能收到 100 行,而 user2 只收到 80 行吗?

我的问题是关于 SQL 标准。

但是可以在评论中随意谈论特定数据库系统的实现。

Phi*_* W. 7

如果两个用户执行同一个sql语句,有没有可能user1和user2得到不同的结果?

是的,一点没错。

行级访问控制允许数据库管理员在表上放置“上下文”过滤器,以便不同的用户确实看到不同的数据。

例如,用户表可能受到保护,这样人事部门的用户可以看到所有人,但任何其他部门的任何人都只能看到同一部门的人。

  • 这是特定于数据库的,而不是一般的 SQL。 (4认同)
  • @guettli:快速浏览并没有发现任何东西。据我所知,SQL 中的权限仅在“对象”级别(表、视图、模式等)而不是在行级别进行管理。我唯一能找到的是对 _columns_ 的权限,因此您示例中的两个用户可能看不到相同的列,但仍然是相同的行。 (2认同)