2013-01-22 4 views
8

テーブルに1つの列を編集する権限をユーザーに与えたいとします。ここではどのようなコマンドを使用しますか?私はoracle 11gデータベースを使用します。私はalrdyがどのようにテーブル全体の読み取りまたは削除のみを許可できるのか知っていますが、1列以上の場合はどうしたらいいですか? plsは例を挙げています。テーブル内の1つの列に対してのみ変更を許可します。

のみINSERTUPDATE、およびREFERENCES権限は、列レベルで付与することができます。this sourceに基づいて

答えて

13

、あなたは、次の文を与え、唯一のENAME列の更新権限を付与したい(xyzはユーザ名です)

grant update (ename) on emp to xyz; 

構文:

grant update(column-name) on table-name to user-name 

EDIT:(granti用

empテーブルのSELECT文をXYZに許可し、XYZがこの権限をさらに継承できるようにするには、このようなGRANT文でWITH GRANT OPTION句を指定する必要があります。

grant select on emp to xyz with grant option; 

また、 たとえば、あなたが唯一のENAME列に更新権限を付与し、唯一のEMPNOおよびENAME列に特権を挿入したい、あなたがこれを行うことができます:

grant update (ename),insert (empno, ename) on emp to xyz; 
+0

完璧に働いたTHXしかし、私だけ選択されたステートメントでは動作していないことを示します。私は代替案を作成しました。これは正しいですか –

+0

あなたは選択権を与えることはできませんか?私も選択特権を与えることができると思います。 –

+0

注:テーブルに対してSELECT権限をUPDATE権限と一緒に付与する必要があります。 –

4

。列レベルでINSERTを付与する場合は、その行にすべてのNOT NULL列を含める必要があります。ここで

は一例です。たとえば

GRANT update (column_name) ON table_name TO user_name; 
関連する問題