使用一条语句对多个属性和表进行 Oracle SQL 特权授权

Posted

技术标签:

【中文标题】使用一条语句对多个属性和表进行 Oracle SQL 特权授权【英文标题】:Oracle SQL privelege authorization on multiple attributes and tables with one statement 【发布时间】:2012-10-28 03:13:09 【问题描述】:

是否可以在一个语句中对不同的表或属性授予不同的权限?

比如我要合并:

GRANT SELECT ON tbl TO user;

GRANT UPDATE OF attr ON tbl TO user;

此外,我可以结合授予不同关系的特权吗:

GRANT INSERT ON tbl2;

所有在一个语句中。

【问题讨论】:

【参考方案1】:

您可以在一个GRANT 中组合多个对象权限,但仅限于同一个对象。例如:

GRANT SELECT, UPDATE(column1, column2), INSERT on TBL to user;

但是,正如您在manual 的语法图中看到的那样,每个GRANT 一次只能操作一个对象。

但是,如果您使用 CREATE SCHEMA 语法,则可以将多个 GRANTs 作为单个语句运行。

CREATE SCHEMA AUTHORIZATION owner_user
GRANT SELECT ON TBL TO user
GRANT SELECT ON TBL2 TO user;

如果您希望简化代码,这将无济于事。但是,如果您对使用单个语句有一些技术要求,它可能会起作用。例如,我经常发现结合 DDL 语句可以显着减少运行安装脚本所需的时间,尤其是在网络速度较慢的情况下。

【讨论】:

以上是关于使用一条语句对多个属性和表进行 Oracle SQL 特权授权的主要内容,如果未能解决你的问题,请参考以下文章

Oracle学习笔记—— 表和表空间

oracle重建数据字典会影响业务嘛

如何使用 .NET 执行多个 Oracle SQL 语句

Oracle 访问数据库字段和表名有大小写区分吗

Oracle 访问数据库字段和表名有大小写区分吗?

[转]oracle中使用set transaction设置事务属性