更新和 SELECT
UPDATE and SELECT
为什么我需要 SELECT 特权:
UPDATE Sailors S SET
S.rating = S.rating - 1
虽然此查询不需要它:
UPDATE Sailors S
SET S.rating = 8
首先,您实际上是在设置 S.rating = SELECT S.rating - 1 FROM Sailors S
第二个你只是设置 S.rating = 一个值 (8)
您似乎在第一个查询(第二个 S.rating)中从 S 读取数据,而在第二个查询中您只是将数据写入 S。要读取数据,您需要 SELECT权限。
首先 'S.rating -1' 这对 Oracle 来说是未知的,Oracle 引擎通过别名 S(在你的例子中是它的水手)去 table 引用并且
a) 从中查询评级并
b)然后从中减去1
对于 a 点,它需要 select 权限。
你选择的是第一个
= S.rating - 1
第二个你没有选择
= 8
SELECT = GRANTEE can retrieve data for one or more of the columns.
INSERT = GRANTEE can provide data for new rows for one or more of the columns.
UPDATE = GRANTEE can modify existing data for one or more of the columns.
为什么我需要 SELECT 特权:
UPDATE Sailors S SET
S.rating = S.rating - 1
虽然此查询不需要它:
UPDATE Sailors S
SET S.rating = 8
首先,您实际上是在设置 S.rating = SELECT S.rating - 1 FROM Sailors S
第二个你只是设置 S.rating = 一个值 (8)
您似乎在第一个查询(第二个 S.rating)中从 S 读取数据,而在第二个查询中您只是将数据写入 S。要读取数据,您需要 SELECT权限。
首先 'S.rating -1' 这对 Oracle 来说是未知的,Oracle 引擎通过别名 S(在你的例子中是它的水手)去 table 引用并且
a) 从中查询评级并
b)然后从中减去1
对于 a 点,它需要 select 权限。
你选择的是第一个
= S.rating - 1
第二个你没有选择
= 8
SELECT = GRANTEE can retrieve data for one or more of the columns.
INSERT = GRANTEE can provide data for new rows for one or more of the columns.
UPDATE = GRANTEE can modify existing data for one or more of the columns.