SQL 是否可以在 GRANT SELECT 语句中添加 WHERE 子句?

SQL is it possible to add a WHERE clause to a GRANT SELECT statement?

我希望能够授予对视图中所有信息的读取权限,DOB 不为空的行除外(即用户只能读取 DOB 为空的行)。这可能吗?一个例子(我想工作但不起作用)是:

GRANT SELECT ON DRVADM WHERE DOB IS NULL TO user_2;

谢谢

  1. 我假设您正在使用 mysql(确认,post 您用于从终端会话连接到数据库的命令)。
  2. 您不能 GRANT 基于行,只能基于 columns/tables 级别。 mysql docs
  3. 中的 GRANT SELECT 语句没有 WHERE 子句
  4. 您可以考虑创建一个仅包含选定行(他必须看到的行)的VIEW。然后授予用户访问此 VIEW(=所有行