为什么GRANT SELECT ON Student TO user3 WHERE Sdept='CS';还是会在SQL-Sever中出错
时间: 2023-11-28 18:48:37 浏览: 74
这个 SQL 语句有一个语法错误。在 SQL 中,GRANT 语句用于授予用户或角色某些权限,但是它不能被用于过滤查询结果。如果你想要授权给 user3 访问 Student 表中 Sdept='CS' 的行,则需要使用以下 SQL 语句:
```
GRANT SELECT ON Student(Sname, Sage, Sdept) TO user3
WHERE Sdept='CS';
```
这个语句将授予 user3 对 Student 表中 Sdept='CS' 的行的 Sname、Sage 和 Sdept 列的 SELECT 权限。请注意,你需要授予 SELECT 权限的具体列名,而不是整个表。
相关问题
CREATE USER user1 CREATE USER user2 CREATE USER user3 GRANT SELECT, UPDATE(Grade) ON SC TO user1; GRANT INSERT ON Student TO user2 WITH GRANT OPTION; GRANT SELECT(Sdept='CS') ON Student TO user3;怎样修改第六条语句使其在SQLSever中不报错
在 SQL Server 中,GRANT 语句中的 SELECT 子句不能使用条件表达式。因此,第六条语句中的 SELECT(Sdept='CS') 会导致错误。
要修改此语句,请改为使用 WHERE 子句来指定筛选条件。例如:
```
GRANT SELECT ON Student TO user3 WHERE Sdept='CS';
```
这将为用户 user3 授予在 Student 表中选择 Sdept='CS' 的权限。
阅读全文