仅对表中的一列授予更改

Posted

技术标签:

【中文标题】仅对表中的一列授予更改【英文标题】:Grant alter on only one column in table 【发布时间】:2013-01-22 15:42:07 【问题描述】:

我只想授予用户编辑表中的一列的权限。我在这里使用什么命令?我使用oracle 11g 数据库。我已经知道如何仅授予对整个表的读取或删除权限,但是如何仅对一列或更多列执行此操作?请举个例子。

【问题讨论】:

【参考方案1】:

例如,您只想授予对 ename 列的更新权限,然后给出以下语句(其中 xyz 是用户名)

grant update (ename) on emp to xyz;

语法:

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

编辑:(用于授予选择权限)

要将 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 语句。我提出了另一种观点。这是正确的 你的意思是..无法授予选择权限?好吧,我认为我们也可以授予选择权限,检查编辑 注意:您必须授予对表的 SELECT 权限以及 UPDATE 权限。【参考方案2】:

基于this source:

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

这是一个例子:

GRANT update (column_name) ON table_name TO user_name;

【讨论】:

以上是关于仅对表中的一列授予更改的主要内容,如果未能解决你的问题,请参考以下文章

如何在不指定列名的情况下使用 bigquery 对表中的每一列调用内置函数?

如何在R中的不同表中找到相等的行?

sql怎么把一个表的一列替换到对应的另一个表中对应的列?

在SQL SERVER 中对表不能设置主键

sql如何将一张表中的一列数据分为两列显示

MySql优化之索引