更新和选择

时间:2016-04-07 18:00:09

标签: sql database select updates privileges

为什么我需要SELECT权限:

UPDATE Sailors S SET 
S.rating = S.rating - 1

虽然我不需要此查询:

 UPDATE Sailors S
 SET S.rating = 8

4 个答案:

答案 0 :(得分:0)

首先,你实际上是设置S.rating = SELECT S.rating - 1 FROM Sailors S

在第二个中你只是设置S.rating =一个值(8)

答案 1 :(得分:0)

看起来你在第一个查询中读取S(第二个S.rating),就像在第二个查询中你只是将数据写入S.要读取数据,你需要SELECT权限。

答案 2 :(得分:0)

在第一个'S.rating -1'中这是Oracle未知的,oracle引擎转到表中引用别名S(在你的情况下是它的水手)和
a)从中查询评分
b)然后从中减去1

对于a点,它需要选择权限。

答案 3 :(得分:0)

首先选择

= S.rating - 1

在第二步中你没有选择

= 8

sp_table_privileges

  

SELECT = GRANTEE可以检索一个或多个列的数据。

     

INSERT = GRANTEE可以为一个或多个列的新行提供数据。

     

UPDATE = GRANTEE可以修改一个或多个列的现有数据。