2013-01-22 8 views
8

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

13

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; 
+0

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 –

+0

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 –

+0

Hinweis: Sie müssen die SELECT-Berechtigung für die Tabelle zusammen mit der UPDATE-Berechtigung gewähren. –

4

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;