2016-04-07 13 views
2

Warum ich das SELECT-Privileg auf diese benötigen:UPDATE und SELECT

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

Während ich brauche es nicht für diese Abfrage:

UPDATE Sailors S 
SET S.rating = 8 
+0

Ich denke, das hängt von der Datenbank ab (in der Praxis hat jeder mit Update-Privilegien ausgewählte Rechte). Aber die erste Abfrage muss einen Wert lesen, daher mag das der Grund sein. –

+0

Welches DBMS benutzen Sie? –

Antwort

0

Im ersten Sie die Auswahl

= S.rating - 1 

In der zweiten Sie nicht die Auswahl

= 8 

sp_table_privileges

SELECT = GRANTEE können Daten für eine oder mehrere der abrufen Säulen.

INSERT = GRANTEE kann Daten für neue Zeilen für eine oder mehrere Spalten bereitstellen.

UPDATE = GRANTEE kann vorhandene Daten für eine oder mehrere Spalten ändern.

0

Im ersten sind Sie im Wesentlichen Einstellung S.rating = SELECT S.rating - 1 FROM Sailors S

In der zweiten sind Sie nur S.rating Wert (8)

0

It = Einstellung sieht aus wie du bist Lesen von S in der ersten Abfrage (der zweiten S.rating), wo Sie wie in der zweiten Abfrage nur Daten in S schreiben. Um Daten zu lesen, benötigen Sie SELECT-Berechtigungen.

0

in erst ‚S.rating -1‘ dies ist unbekannt Oracle und Oracle-Motor geht an den Tisch von Alias ​​S (seine Matrosen in Ihrem Fall) beziehen und
a) Abfrage Bewertung von ihm und
b) dann subtrahiere 1 davon

für Punkt a erfordert es select privilege.

Verwandte Themen