在表中仅授予一列的alter权限

25

我想授予一个用户只能编辑我的表中的一列,应该使用什么命令?我使用的是Oracle 11g数据库。我已经知道如何仅授予整个表的读取或删除权限,但如何针对单个列或多个列执行操作?请提供一个示例。

2个回答

43
例如,如果你只想授予对 ename 列的更新权限,可以使用以下语句(其中 xyz 是用户名)。
grant update (ename) on emp to xyz;

语法:

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

编辑: (授予select权限)

要将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;

谢谢,那个效果非常好。但是我刚看到它不能与SELECT语句一起使用。作为替代方案,我创建了一个视图。这样正确吗? - Vincenz Mössenböck
你的意思是说不能授予选择权限吗?我认为我们也可以授予选择权限,检查编辑。 - Vinayak Pahalwan
1
注意:您必须授予表的SELECT权限以及UPDATE权限。 - Vinayak Pahalwan

6

根据这个来源

只能在列级别授予INSERTUPDATEREFERENCES权限。当在列级别授予INSERT权限时,必须包括行中所有非空列。

以下是一个例子:

GRANT update (column_name) ON table_name TO user_name;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接