Почему мне нужно ВЫБЕРИТЕ привилегию на это:UPDATE и ВЫБРАТЬ
UPDATE Sailors S SET
S.rating = S.rating - 1
В то время как я не нужно для этого запроса:
UPDATE Sailors S
SET S.rating = 8
Почему мне нужно ВЫБЕРИТЕ привилегию на это:UPDATE и ВЫБРАТЬ
UPDATE Sailors S SET
S.rating = S.rating - 1
В то время как я не нужно для этого запроса:
UPDATE Sailors S
SET S.rating = 8
В первом вы выбираете
= S.rating - 1
Во втором вы не выбираете
= 8
ВЫБОР = грантозаявителя может извлекать данные по одному или более из колонны.
INSERT = GRANTEE может предоставлять данные для новых строк для одного или нескольких столбцов.
UPDATE = GRANTEE может изменять существующие данные для одного или нескольких столбцов.
В первой, вы, по сути настройки S.rating = SELECT S.rating - 1 FROM Sailors S
Во втором вы просто заходящего S.rating = значение (8)
похоже, вы чтение из S в первом запросе (второй S.rating), где, как и во втором запросе, вы только когда-либо записываете данные на S. Для чтения данных вам понадобятся разрешения SELECT.
в первой «S.rating -1» это неизвестно Oracle и оракул двигатель идет к столу см по псевдонимам S (его матросы в вашем случае) и
а) рейтинг запросов от него и
б) затем вычесть 1 из него
для точки a для этого требуется привилегия выбора.
Я предполагаю, что это зависит от базы данных (на практике у любого, у кого есть привилегии выбора, есть привилегии выбора). Но первый запрос должен прочитать значение, поэтому это может быть причиной. –
Какая СУБД вы используете? –