Ich möchte einem Benutzer nur eine Spalte in meiner Tabelle bearbeiten. Welchen Befehl verwende ich hier? Ich benutze die Oracle 11g Datenbank. Ich weiß sowieso, wie ich nur lesen oder löschen kann auf der ganzen Tabelle, aber wie mache ich es nur für eine Spalte oder mehr? Bitte geben Sie ein Beispiel.Grant ändern nur für eine Spalte in Tabelle
Antwort
Zum Beispiel wollen Sie Update-Berechtigung auf ename Spalte nur gewähren, dann die folgende Anweisung geben (wobei xyz der Benutzername)
grant update (ename) on emp to xyz;
Syntax :
grant update(column-name) on table-name to user-name
EDIT: (für granti ng select privilege)
Um eine SELECT-Anweisung für die emp-Tabelle zu XYZ zu erteilen und XYZ in die Lage zu versetzen, diese Berechtigung weiterzugeben, müssen Sie die WITH GRANT OPTION-Klausel in der GRANT-Anweisung wie folgt angeben.
grant select on emp to xyz with grant option;
Auch Zum Beispiel möchten Sie Update-Berechtigung auf ename Spalte nur gewähren, und legen Sie Privileg auf empno und ename Spalten nur, können Sie dies tun:
grant update (ename),insert (empno, ename) on emp to xyz;
Basierend auf this source:
Nur INSERT
, UPDATE
und REFERENCES
Privilegien auf Spaltenebene gewährt werden kann. Wenn Sie INSERT
auf Spaltenebene erteilen, müssen Sie alle Nicht-Null-Spalten in der Zeile einschließen. Hier
ein Beispiel:
GRANT update (column_name) ON table_name TO user_name;
thx, die perfekt gearbeitet, aber ich nur rot, dass es nicht mit Select-Anweisungen arbeitet. Ich habe als Alternative eine Ansicht gemacht. ist das korrekt –
u bedeuten..ein kann select privileg nicht gewähren? Nun, ich denke, wir können auch ausgewählte Berechtigungen gewähren, überprüfen Sie bearbeiten –
Hinweis: Sie müssen die SELECT-Berechtigung für die Tabelle zusammen mit der UPDATE-Berechtigung gewähren. –