返回首页

gbase数据、南大通用产品文档:GBase8sSELECT 语句的输出

更新日期:2024年09月11日

虽然在所有GBase 8s 产品中语法相同,但是结果输出的格式和显示取决于应用程序。本章
和编写高级 SELECT 语句中的示例如同您在 DB-Access 中使用“交互式查询语言”选项
时那样显示 SELECT 语句及输出。
大对象数据类型的输出
当发出包含大对象的 SELECT 语句时,DB-Access 按如下所示显示结果:

对于 TEXT 列或 CLOB 列,显示列的内容。

对于 BYTE 列,显示词 而不是实际值。

对于 BLOB 列,显示词 而不是实际值。

用户定义的数据类型的输出
DB-Access 使用特殊约定来显示包含复杂或不透明数据类型的列的输出。有关这些数据类
型的更多信息,请参阅《GBase 8s 数据库设计和实现指南》。

非缺省代码集的输出
可以发出查询 NCHAR 列而不是 CHAR 列,
或者 NVARCHAR 列而不是 VARCHAR 列
的 SELECT 语句。
有关 Global Language Support(GLS)的更多信息,请参阅《GBase 8s GLS 用户指南》。
有关将 NCHAR 和 NVARCHAR 数据类型与非缺省代码集配合使用的其它信息,请参阅
《GBase 8s 数据库设计和实现指南》和《GBase 8s SQL 参考指南》。

使用 REVOKE 语句来取消由用户、由角色或由 PUBLIC 持有的访问权限或角
色,或从安全策略的规则取消用户安全标签或豁免。
语法

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 804

FROM 选项

元素
描述
限制
语法
revoker 要取消的权限的授予者的授权标
识符
必须为指定的
权限的授予者
所有者名称
role
您从其取消另一角色的角色
必须存在
所有者名称
user
您取消其角色(或缺省的角色)
的用户
必须存在
所有者名称
用法
要取消已经通过表达式分片的表的一个或多个分片上的权限,请参阅 REVOKE
FRAGMENT 语句。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 805
对于您尝试取消一些数据库对象上的权限,如果任何下列条件为真,则您可取消
权限:

您授予它们,且不指定另一用户作为授予者。

GRANT 语句指定了您作为授予者。

您正在从 PUBLIC 对您拥有的对象取消权限,且当您创建该对象时缺省
地授予了那些权限。

您有数据库级 DBA 权限且您在 AS 子句中指定了该权限的授予者的用
户名称。
REVOKE 语句可取消用户,或 PUBLIC,或角色当前持有的任何下列访问权限或
角色:

对数据库的权限(但角色不可持有数据库级权限)

对表、同义词、视图或序列对象的权限

对用户定义的数据类型(UDT)、用户定义的例程(UDR),或对 SPL
语言的权限

非缺省的角色,或 PUBLIC 或用户的缺省的角色。
您不可从您自己取消权限。您不可从另一用户取消授予者状态。要取消通过
GRANT 语句的 AS grantor 子句授予给另一用户的权限,您必须有 DBA 权限,
且您必须使用 AS 子句来指定作为 revoker 的用户。
如果您在引号中括起了 revoker、 role 或 user,则名称是区分大小写的,完全按
照您输入的样子存储名称。在符合 ANSI 的数据库中,如果您不使用引号作为定
界符,则以大写字母存储该名称。
从映射了的用户取消数据库服务器访问(UNIX™、Linux™)
使用 REVOKE ACCESS FROM 语句来从特定的映射了的用户移除代理用户属
性。
仅用户 gbasedbt 或 DBSA 可运行 REVOKE ACCESS FROM 语句。
REVOKE ACCESS FROM 语句不影响通过 OS 级账户在主计算机上访问数据库
服务器的 GBase 8s 用户账号名称的任何访问权限。
示例:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 806
用户 gbasedbt 或 DBSA 可在支持映射了的用户的系统上运行下列语句,且映射
了的用户之一为用户 bob:
此语句完全地移除了用户 bob 对数据库服务器的访问,除了当下列之一或全都为
真之外:

PUBLIC 被映射到代理用户属性。在此情况下,用户 bob 仍保持与
PUBLIC 组持有的相同的访问权限。

在数据库服务器访问的 GBase 8s 主计算机上,用户 bob 还是用户账
户。
数据库级权限
数据库级权限的三个同心层,Connect、Resource 和 DBA,对数据库访问和控制
依次递增的授权。仅拥有 DBA 权限的用户可授予或取消数据库级权限。
数据库级权限

由于权限的层级组织(如本节稍后描述的权限定义中所述的那样),如果您从拥
有 DBA 权限的用户取消 Resource 权限或 Connect 权限,则该语句没有作用。
如果您从有 DBA 权限的用户取消该 DBA 权限,则该用户保留对该数据库的
Connect 权限。要拒绝有 DBA 或 Resource 权限的用户访问数据库,您必须先取
消 DBA 或 Resource 权限,然后在单独的 REVOKE 语句中取消 Connect 权
限。
类似地,如果您从有 Resource 权限的用户取消 Connect 权限,则该语句没有作
用。如果您从用户取消 Resource 权限,则该用户保留对数据库的 Connect 权
限。
仅用户或 PUBLIC 可持有数据库级权限。您不可从角色取消这些权限,因为角色
不可持有数据库级权限。
下表罗列每一数据库级权限的关键字。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 807
权限
作用
DBA
有 Resource 权限的所有能力,且可执行下列附加的操作:

将包括 DBA 权限在内的所有数据库级权限授予另一用
户。

将任何表级权限授予另一用户或角色。

将角色授予用户或另一角色。

取消其授予者为您在 REVOKE 语句的 AS 子句中作为
revoker 的权限。

当注册 UDR 时,限制 DBA 的 Execute 权限。

执行 SET SESSION AUTHORIZATION 语句。

创建任何数据库对象。

创建表、视图和索引,指定另一用户作为这些对象的所
有者。

变更、删除或重命名数据库对象,不管其所有者是谁。

执行 UPDATE STATISTICS 语句的 DROP
DISTRIBUTIONS 选项。

执行 DROP DATABASE 和 RENAME DATABASE 语
句。
RESOURCE
让您扩展数据库的结构。除了 Connect 权限的能力之外,
Resource 权限的持有者还可执行下列操作:

创建新表。

创建新索引。

创建新的用户定义的例程。

创建新的数据类型。

授予用户注释权限(COMMENT ANY TABLE)。
CONNECT
如果您有此权限,则可查询和修改数据,如果您拥有您想要修改
的数据库对象,则可修改该数据库模式。持有 Connect 权限的
用户可执行下列操作:

以 CONNECT 语句或另一连接语句连接到数据库。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 808
权限
作用

执行 SELECT、INSERT、UPDATE 和 DELETE 语
句,只要用户有必要的表级权限。

创建视图,只要用户有对基础表的 Select 权限。

创建同义词。

创建临时表,并在临时表上创建索引。

变更或删除表或索引,如果用户拥有该表或索引(或有
对表的 Alter、Index 或 References 权限)。

授予对表的权限,如果用户拥有该表(或通过 WITH
GRANT OPTION 关键字被授予了对该表的权限)。
提示:要确定哪些用户有对数据库的 DBA 权限,请从 DB-Access 或您的应用系
统运行此查询:
select username,usertype from sysusers;
输出展示用户名(例如,public 和 gbasedbt)后跟下列代码之一:

D = DBA 权限

C = Connect 权限

R = Resource 权限
表级权限
表级权限,也称为表权限,指定用户或角色可在数据库中的表或视图上执行哪些
操作。您可使用同义词来指定您在其上授予或取消表权限的表或视图。
可在表或视图的列的子集上授予 Select、Update 和 References 权限,但仅可对所
有列取消权限。对于在定义同一用户拥有的视图的 SELECT 语句中引用的表,如
果从用户取消 Select 权限,则删除那个视图,除非它还包括来自另一数据库中表
的列。
对于 CREATE EXTERNAL TABLE 语句已经在当前的数据库中注册了的表对
象,仅支持 Select 权限和 Insert 权限;不可授予或取消其他表或列访问权限。
使用下列语法来指定从一个或多个用户或角色取消哪些表级权限:
表级权限

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 809

元素
描述
限制
语法
owner
拥有 table、view 或 synonym
的用户的名称
必须为有效的
授权标识符
所有者名称
synonym、
table、
view
在其上授予权限的同义词、表或
视图
在当前的数据
库中必须存在
标识符
在一 REVOKE 语句中,您可罗列一个或多个下列关键字来指定对指定的表要从用
户或角色取消的权限。



GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 810
权限
在 REVOKE 之后的作用
INSERT
用户不可插入行。
DELETE
用户不可删除行。
SELECT
用户不可通过 SELECT 语句显示检索的数据。
UPDATE
用户不可更改列值。
INDEX
用户不可创建永久的索引。您必须有 Resource 权限来利用
Index 权限。(但任何有 Connect 权限的用户都可在临时表上
创建索引。)
ALTER
持有者不可添加或删除列、修改列数据类型、添加或删除约
束、将表的锁定模式由 PAGE 更改为 ROW,也不可添加或删除
相应的命名了的 ROW 类型表。用户还不可启用或禁用索引、约
束以及触发器,如 SET Database Object Mode 语句 中所述。
REFERENCES 用户不可引用引用约束中的列。您还必须有对该数据库的
Resource 权限来利用表上的 References 权限。(然而,您可
在 ALTER TABLE 语句期间添加引用约束,而不持有对该数据库
的 Resource 权限。)取消 References 权限不允许级联
DELETE 操作。
UNDER
用户不可创建在类型表之下的子表。
ALL
这将移除以上罗列的所有表权限。(此处的 PRIVILEGES 关键
字是可选的。)
如果用户从两个不同的授予者收到相同的权限,且一授予者取消该权限,则被授
予者仍有该权限,直到第二个授予者也取消该权限为止。例如,如果您和 DBA
都将对您的表的 Update 权限授予 ted,则您和 DBA 必须都取消 Update 权限来
阻止 ted 更新您的表。
然而,如果用户 ted 通过角色或作为 PUBLIC 持有相同的权限,则此 REVOKE
操作不能阻止 ted 行使 Update 权限。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 811
何时在 GRANT 之前使用 REVOKE
您可使用 REVOKE 与 GRANT 的组合来以特定的用户替代 PUBLIC 作为被授
予者,并移除对一些列的表级权限。
以指定的用户替代 PUBLIC
如果表所有者将权限授予 PUBLIC,则该所有者不可从任何特定的用户取消同一
权限。例如,假设 PUBLIC 对您的 customer 表有缺省的 Select 权限。假设您
发出下列语句,尝试阻止 ted 访问您的表:
REVOKE ALL ON customer FROM ted;
此语句导致 ISAM 错误消息 111,No record found,因为系统目录表
(syscolauth 或 systabauth)未包含名为 ted 的用户的表级权限条目。此
REVOKE 操作不阻止 ted 保持所有赋予 PUBLIC 的对 customer 表的表级权
限。
要限制表级权限,首先以 PUBLIC 关键字取消该权限,然后将它们重新授予某适
当的用户和角色列表。下列语句从所有用户取消对 customer 表的 Index 和
Alter 权限,然后特定地将这些权限授予用户 mary:
REVOKE INDEX, ALTER ON customer FROM PUBLIC;
GRANT INDEX, ALTER ON customer TO mary;
限制对特定列的访问
不同于 GRANT,REVOKE 语句没有语法来对表中的列的子集指定权限。要从用
户取消对列的 Select、Update 或 References 权限,您必须对该表的所有列取消该
权限。要提供对您先前已在其上授予了权限的一些列的访问,请发出新的
GRANT 语句来恢复对特定列的适当的权限。
下一示例取消 PUBLIC 对特定列的 Select 权限:
REVOKE SELECT ON customer FROM PUBLIC;
GRANT SELECT (fname, lname, company, city) ON customer TO PUBLIC;
在下一示例中,mary 首先获得对 customer 中四列的引用能力,然后该表拥有者
将引用限定为两列:
GRANT REFERENCES (fname, lname, company, city) ON customer TO mary;
REVOKE REFERENCES ON customer FROM mary;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 812
GRANT REFERENCES (company, city) ON customer TO mary;
ALL 关键字的作用
ALL 关键字取消所有表级权限。如果对于被取消者任何或所有表级权限不存在,
则带有 ALL 关键字的 REVOKE 执行成功但返回下列 SQLSTATE 代码:
01006--Privilege not revoked
例如,假设用户 hal 有对 customer 表的 Select 和 Insert 权限。用户 jocelyn
想要从用户 hal 取消所有表级权限。于是用户 jocelyn 发出下列 REVOKE 语
句:
REVOKE ALL ON customer FROM hal;
此语句执行成功但返回 SQLSTATE 代码 01006。返回该 SQLSTATE 警告是因为下
列二者都为真:

该语句成功地从用户 hal 取消 Select 和 Insert 权限,因为用户 hal 有
那些权限。

返回 SQLSTATE 代码 01006 是因为用户 hal 缺少通过 ALL 关键字隐
含的其他权限,但这些权限还未被取消。
ALL 关键字指示数据库管理器来取消所有可能的权限,包括无任何权限。如果从
其取消权限的用户没有对该表的权限,则 REVOKE ALL 语句仍然成功,因为它
从该用户取消所有可能的权限(在此情况下,根本没有权限)。
ALL 关键字对 UNDER 权限的作用
如果您对类型表取消 ALL 权限,则 Under 权限包括在被取消的权限之中。如果
您对不是基于 ROW 类型的表取消 ALL 权限,则 Under 权限不包括在被取消的
权限之中。(仅可对类型表授予 Under 权限。)
未提交的事务的影响
REVOKE 对取消权限的表在 systables 系统目录表中的条目上放置一排他的行
锁。直到包含 REVOKE 语句的事务终止,才释放此锁。当另一事务尝试对此表
准备 SELECT 语句,而第一个事务是打开的,则并发事务失败,因为指定的表的
systables 行仍然排他地锁定着。直到第一个事务或提交或回滚,要准备 SELECT
语句的尝试才可成功。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 813
类型级权限
您可对数据类型取消两权限:

对用户定义的数据类型的 Usage 权限

对命名的 ROW 类型的 Under 权限
类型级权限

元素
描述
限制
语法
row_type
对其取消 Under 权限的命名的 ROW
类型
必须存在
数据类型,
type_name
对其取消 Usage 权限的用户定义的
类型
必须存在
数据类型,
Usage 权限
任何用户都可引用 SQL 语句中的内建的数据类型,但不可引用基于内建的数据
类型的 DISTINCT 数据类型。用户定义的数据类型的创建者或 DBA 必须显式地
授予对 UDT 的 Usage 权限,包括基于内建的数据类型的 DISTINCT 数据类
型。
带有 USAGE ON TYPE 关键字的 REVOKE 移除您稍早授予另一用户、PUBLIC
或角色的 Usage 权限。
下列语句从用户 mark 移除使用 widget 用户定义的类型的权限:
REVOKE USAGE ON TYPE widget FROM mark;
Under 权限
您拥有您创建的任何命名的 ROW 数据类型。如果您想要其他用户能
够在此命名的 ROW 类型之下创建子类型,则您必须授予这些用户对
于您的命名的 ROW 类型的 Under 权限。如果您稍后想要移除这些用

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 814
户在该命名的 ROW 类型之下创建子类型的能力,则您必须从这些用
户取消 Under 权限。带有 UNDER ON TYPE 关键字的 REVOKE 语
句移除您稍早授予这些用户的 Under 权限。
例如,假设您创建了名为 rtype1 的 ROW 类型:
CREATE ROW TYPE rtype1 (cola INT, colb INT);
如果您想要另一名为 kathy 的用户能够在此命名的 ROW 类型之下创建子类
型,则您必须将对于此命名的 ROW 类型的 Under 权限授予用户 kathy:
GRANT UNDER ON TYPE rtype1 TO kathy;
现在,即使 kathy 不是 rtype1 ROW 类型的所有者,用户 kathy 也可在
rtype1 ROW 类型之下创建另一 ROW 类型:
CREATE ROW TYPE rtype2 (colc INT, cold INT) UNDER rtype1;
如果您稍后想要移除用户 kathy 在 rtype1 ROW 类型之下创建子类型的能力,
则请输入下列语句:
REVOKE UNDER ON TYPE rtype1 FROM kathy;
例程级权限
如果您从用户取消对 UDR 的 Execute 权限,则那个用户不可再以任何方式执行
那个 UDR。要获取用户可如何执行 UDR 的详细信息,请参阅 例程级权限。
例程级权限

元素
描述
限制
语法
routine
用户定义的例程
必须存在
标识符
SPL_routine
SPL 例程
在该数据库中必须为唯一的 标识符

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 815
在符合 ANSI 的数据库中,owner 名称必须限定 routine 名称,除非发出
REVOKE 语句的用户为该例程的所有者。
下列示例取消用户 mark 对由 luke 所拥有的 delete_order 例程的 Execute 权
限:
REVOKE EXECUTE ON ROUTINE luke.delete_order FROM mark;

在 GBase 8s 中,任何您授予 Execute 权限的取反函数都需要单独的、显式的
REVOKE 语句。
当您在任何下列环境之下创建 UDR,都不会缺省地授予 PUBLIC Execute 权限。
因此,在您可取消它之前,您必须显式地授予 Execute 权限:

您在符合 ANSI 的数据库中创建 UDR。

您有 DBA 权限且在 CREATE 关键字之后指定 DBA 来将 Execute 权
限限定给拥有 DBA 数据库级权限的用户。

NODEFDAC 环境变量设置为 yes 来防止 PUBLIC 收到任何未被显式
地授予的权限。
但如果您在没有任何那些条件生效的情况下创建 UDR,则 PUBLIC 可无需
GRANT EXECUTE 语句即可执行您的 UDR。要限定谁可执行您的 UDR,请通
过 FROM PUBLIC 取消 Execute 权限,并将它授予用户(请参阅 用户列表)或
角色(请参阅 角色名称)。
在 GBase 8s 中,如果两个或多个 UDR 有相同的名称,则请从此列表使用关键
字来指定用户列表可不再执行那些 UDR 中的哪些。
关键字 防止用户执行的 UDR
SPECIFIC 通过 specific name 标识的 UDR
FUNCTION 任何带有指定的 routine name 的函数(以及与 routine 参
数列表相匹配的参数类型,如果指定的话)
PROCEDURE 任何带有指定的 routine name 的过程(以及与 routine 参
数列表相匹配的参数类型,如果指定的话)

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 816
ROUTINE 带有指定的 routine name 的函数或过程(以及与 routine
参数列表相匹配的参数类型,如果指定的话)
语言级权限
要注册或删除用 SPL、C 或 Java™ 语言编写的 UDR,用户必须持有对用以编写
该例程的编程语言的 Usage 权限。
这是对于指定要取消的语言级权限的 USAGE ON LANGUAGE 子句的语法:
语言级权限

每一 REVOKE USAGE ON LANGUAGE 语句可指定不多于一种编程语言。
当用户注册以 SPL、C 或 Java 语言编写的 UDR 时,数据库服务器验证该用户
是否有对用以编写该 UDR 的语言的 Usage 权限。 如果该用户不具权限,则
CREATE FUNCTION 或 CREATE PROCEDURE 语句失败并报错。 如果
IFX_EXTEND_ROLE 配置参数已启用内建的 EXTEND 角色,则仅还持有那个角
色的用户可注册或删除以 C 语言或以 Java 语言编写的 UDR,即使用户持有对
那些语言的 USAGE ON LANGUAGE 权限。
要从用户或角色取消对编程语言的 Usage 权限,请发出包括 USAGE ON LANGUAGE
关键字和指定该编程语言的关键字的 REVOKE 语句。如果此语句成功,则任何您
在 FROM 子句中指定的用户或角色都可不再注册那些以该语言编写的 UDR。例
如,如果您从 PUBLIC 取消对 SPL 的缺省的 Usage 权限,则从所有用户剥夺创
建 SPL 例程的能力(除了那些已被单独地授予了对该 SPL 语言的 Usage 权限的
用户,或通过角色持有那 Usage 权限的用户之外):
REVOKE USAGE ON LANGUAGE SPL FROM PUBLIC;
您可发出 GRANT USAGE ON LANGUAGE 语句来给受限的组恢复对 SPL 的 Usage 权
限,比如,给名为 developers 的角色:
GRANT USAGE ON LANGUAGE SPL TO developers;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 817
序列级权限
虽然 GBase 8s 以表的形式实现序列对象,但仅可对序列授予或取消表权限的下
列子集(如 表级权限 中所述):

Select 权限

Alter 权限
使用下列语法来指定要对序列对象取消的权限:
序列级权限

元素
描述
限制
语法
owner
序列或其同义词的所有者
必须为所有者
所有者名称
sequence 要取消其权限的序列
必须存在
标识符
synonym
序列对象的同义词
必须指向序列
标识符
序列必须驻留在当前的数据库中。(您可以有效的 owner 名称限定 sequence 或
synonym 标识符,但远程的 database 的名称(或 database@server)为无效限定
符。)取消序列级权限的语法是对 SQL 的 ANSI/ISO 标准的扩展。
Alter 权限
您可从另一用户、从 PUBLIC 或从角色取消对序列的 Alter 权限。Alter 权限使
得指定的用户或角色能以 ALTER SEQUENCE 语句修改序列的定义,或以
RENAME SEQUENCE 语句重命名该序列。
下列 REVOKE 语句取消分别授予用户 mark 对 cust_seq 序列对象的任何 Alter
权限:
REVOKE ALTER ON cust_seq FROM mark;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 818
Select 权限
您可从另一用户、从 PUBLIC 或从角色取消对序列的 Select 权限。
Select 权限使得用户或角色能使用 SQL 语句中的 sequence.CURRVAL
和 sequence.NEXTVAL 来访问和增大序列的值。
下列 REVOKE 语句取消单独地授予用户 mark 对 cust_seq 序列对象的任何
Select 权限:
REVOKE SELECT ON cust_seq FROM mark;
ALL 关键字
您可使用 ALL 关键字来从另一用户、从 PUBLIC 或从角色同时取消 Alter 和
Select 权限。
下例取消用户 mark 对 cust_seq 序列对象持有的任何 Alter 和 Select 权限:
REVOKE ALL ON cust_seq FROM mark;
在此语句执行之后,mark 是否仍可访问 cust_seq 取决于该用户是否仍持有授予
PUBLIC 的对 cust_seq 的 Alter 或 Select 权限,或他是否持有已授予了的对
cust_seq 的未取消的权限的角色。
用户列表
跟在 REVOKE 的 FROM 关键字之后的授权标识符(或 PUBLIC 关键字)指定
失去取消了的权限或取消了的角色的用户。 如果您使用 PUBLIC 关键字作为用
户列表,则 REVOKE 语句从 PUBLIC 取消指定的权限或角色,从而从所有用户
到尚未显式地授予权限或角色的用户,或从未通过已收到的角色或权限而持有一
些其他角色的用户取消它们。
user list 可包含单个用户或多个用户的授权标识符,以逗号分隔。如果您使用
PUBLIC 关键字作为用户列表,则 REVOKE 语句从所有用户取消指定的权限。
用户列表

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 819

元素
描述
限制
语法
user
您正在取消其权限的用户的登
录名
必须为有效的授权
标识符
所有者名称
在该列表中用户名称的拼写与在 GRANT 语句中的拼写完全一致。您可有选择地
在该列表中使用括起每一用户名称的引号来保留大小写。在符合 ANSI 的数据库
中,如果您不使用引号来定界 user,则以大写字母存储该用户的名称,除非在初
始化数据库服务器之前 ANSIOWNER 环境变量设置成了 1。
当您指定登录名时,可使用 REVOKE 语句和 GRANT 语句来有选择
地确保数据库对象的各种类型。要了解示例,请参阅 何时在 GRANT
之前使用 REVOKE。
角色名称
仅 DBA 或通过 WITH GRANT OPTION 被授予了角色的用户可取消角色或其权
限。用户不可取消自身的角色。
角色名称

元素
描述
限制
语法
role
有这些属性之一的角色:

失去现有的权限或角色

被用户或被另一角色失

必须存在。如果括在引号
之间,则 role 区分大小
写。
所有者
名称

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 820
紧跟在 REVOKE 关键字之后,role 的名称指定要从用户列表取消的角色。然
而,在 FROM 关键字之后,role 的名称指定要从其取消访问权限(或另一角
色)的角色。如果没有其他的 REVOKE 选项与 user 或 role 规范相冲突,则同
一 FROM 子句可同时包括 user 和 role 名称。要从角色取消对角色的权限的语
法是对 SQL 的 ANSI/ISO 标准的扩展。
当您在 REVOKE 语句的 FROM 关键字之后包括 role,则从那个角色取消指定
的权限(或另一角色),但有那个角色的用户保留那些单独地授予给他们的任何
权限或角色。
如果您将 role 括在引号之间,则该名称区分大小写,且完全按照您输入的形式存
储。在符合 ANSI 的数据库中,如果您不使用引号作为定界符,则以大写字母形
式存储 role。
当您取消以 WITH GRANT OPTION 关键字授予了用户的角色时,您同时取消该
角色及授予它的选项。
下列示例展示 REVOKE role 的作用:

移除用户或从指定的角色中包含的项移除另一角色:
REVOKE accounting FROM mary;
REVOKE payroll FROM accounting;

从角色移除一个或多个访问权限:
REVOKE UPDATE ON employee FROM accounting;
当您从角色取消表级权限时,您不可包括 RESTRICT 或 CASCADE 关键字。
取消缺省的角色
DBA 或数据库的所有者可以 GRANT DEFAULT ROLE 语句为一个或多个用户或
为 PUBLIC 定义缺省的角色。不同于非缺省的角色,当用户连接到数据库时,缺
省的角色自动地生效。直到 SET ROLE 语句激活该角色,非缺省的角色才生效。
缺省的角色可为被授予了那个缺省的角色的所有用户指定一系列访问权限。相反
地,REVOKE DEFAULT ROLE 语句为指定的 user-list 取消当前的缺省的角色
作为缺省的角色,如下列程序片段所示:
CREATE ROLE accounting;
GRANT USAGE ON LANGUAGE SPL TO accounting;
GRANT ALL PRIVILEGES ON receivables TO accounting;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 821
GRANT DEFAULT ROLE accounting TO mary;
. . .
REVOKE DEFAULT ROLE FROM mary;
最后的语句从用户 mary 移除任何她仅通过她的缺省的角色所持有的任何访问权
限。在此示例中,该缺省的角色为 accounting,但由于在给定的时间点对于单个
用户(或 PUBLIC 组)可仅有一个角色,所以在 REVOKE DEFAULT ROLE 语
句中不指定缺省的角色的名称。如果 mary 发出 SET ROLE DEFAULT 语句,则
直到授予他某新的缺省的角色之后,它才会有效。
在您执行指定一个或多个用户或 PUBLIC 的 REVOKE DEFAULT ROLE 之后,
仅通过缺省的用户,才能取消那些用户持有的任何权限。(但此语句不取消单独
地授予了用户的任何权限,或通过另一角色授予了用户的权限,或 PUBLIC 持有
的权限。)
在 REVOKE DEFAULT ROLE 成功地取消 user 的缺省的角色之后,user 的缺
省的角色成为 NULL,且从系统目录移除该缺省的角色信息。(在此上下文中,
NULL 与 NONE 是同义词。)
如果 REVOKE DEFAULT ROLE 指定尚未授予缺省的角色的用户,则不发出警
告。
除了 user-list 之外,在 REVOKE DEFAULT ROLE 语句中的 FROM 关键字之
后的选项都无效。
取消 EXTEND 角色
REVOKE EXTEND FROM user-list 语句取消指定用户的 EXTEND 角色。在启用
IFX_EXTEND_ROLE 配置参数的数据库中,取消此角色防止指定的用户创建或删
除外部 UDR。用户是否持有 EXTEND 角色对创建或删除以 SPL 语言编写的
UDR 没有作用。
仅数据库服务器管理员(DBSA),缺省为用户 gbasedbt,可通过发出 GRANT
EXTEND TO user-list 语句将内建的 EXTEND 角色授予一个或多个用户或授予
PUBLIC。(由于 EXTEND 为内建的角色,因此持有它的用户不需要以 SET
ROLE 语句激活它,且 DROP ROLE 语句不可销毁 EXTEND 角色。)

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 822
如果 IFX_EXTEND_ROLE 配置参数设置为 ON 或为 1,则不持有 EXTEND 角色的用
户不可创建或删除以 C 或 Java™ 语言编写的 UDR,这两种语言都支持共享库。
下列示例从用户 max 取消 EXTEND 角色:
REVOKE EXTEND FROM 'max';
这防止用户 max 创建或删除外部的 UDR,即使 max 为它后续试图删除的那个
UDR 的所有者。
在不需要此安全特性的数据库中,DBSA 可通过设置 ONCONFIG 文件中的
IFX_EXTEND_ROLE 参数为 OFF 或为 0 来禁用对可创建或删除外部的 UDR 的用户
的限制。但不论启用或禁用 IFX_EXTEND_ROLE,创建或删除外部的 UDR 的用户还
必须持有下列访问权限:

对在其中注册 UDR 的数据库的 Resource 权限或 DBA 权限。

对以其编写 UDR 的外部编程语言的 Usage 权限。
要获取关于 Resource 权限的信息,请参阅 数据库级权限。要获取 SQL 的
GRANT USAGE ON LANGUAGE C 和 GRANT USAGE ON LANGUAGE JAVA
的语法,请参阅 语言级权限。
取消 WITH GRANT OPTION 授予的权限
如果您从 user 取消您使用 WITH GRANT OPTION 关键字授予的权限或角色,
则切断由那个 user 授予的权限的链条。
这样,当您从用户或从角色取消权限时,您还取消了在下列上下文中 GRANT 语句
所产生的相同的权限:

由您的被授予者发出的

允许,因为您的被授予者指定了 WITH GRANT OPTION 子句

允许,因为后续的被授予者使用 WITH GRANT OPTION 子句授予了相
同的权限或角色
在给特定的用户指定权限的 GRANT 语句中,仅 WITH GRANT OPTION 子句是
有效的。被授予者不可为 PUBLIC 组或角色。
下列示例展示权限的取消。假设您,作为表 items 的所有者,发出下列语句来将
访问权限授予用户 mary:
REVOKE ALL ON items FROM PUBLIC;
GRANT SELECT, UPDATE ON items TO mary WITH GRANT OPTION;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 823
然后,用户 mary 使用她的新权限来授予用户 cathy 和 paul 对 items 表的访
问:
GRANT SELECT, UPDATE ON items TO cathy;
GRANT SELECT ON items TO paul;
稍后,您从用户 mary 取消对 items 表的权限:
REVOKE SELECT, UPDATE ON items FROM mary;
此单一语句有效地从用户 mary、cathy 和 paul 取消对 items 表的所有权限。
CASCADE 关键字与此缺省的情况有相同的作用。
AS 子句
若没有 AS 子句,执行 REVOKE 语句的用户必须为正被取消的权限
的授予者。DBA 或该对象的所有者可使用 AS 子句来指定另一用户
(必须为该权限的授予者)作为该权限的取消者。
AS 子句提供唯一的机制,可取消对其 owner 为诸如 gbasedbt 这样的授权标识
符的数据库对象的权限,该标识符还不是操作系统已知的有效的用户账户。
要了解 AS revoker 子句需要的,而不是可选的,上下文,请参阅 将 Execute 权
限从 PUBLIC 取消。
CASCADE 关键字对 UNDER 权限的作用
如果您以 CASCADE 选项取消对类型表的 Under 权限,则从指定的用户移除
Under 权限,并从数据库删除那个用户在该类型表之下创建的任何子表。
如果当那个数据类型正在使用时,您以 CASCADE 选项取消对命名的 ROW 类
型的 Under 权限,则 REVOKE 失败。对 CASCADE 选项的缺省的行为会发生
例外,因为数据库服务器支持仅带有 RESTRICT 关键字的 DROP ROW TYPE 语
句。
例如,假设用户 jeff 创建名为 rtype1 的 ROW 类型,并将对那个 ROW 类型
的 Under 权限授予用户 mary。现在,用户 mary 在 ROW 类型 rtype1 之下创
建名为 rtype2 的 ROW 类型,并将对 ROW 类型 rtype2 的 Under 权限授予用
户 andy。然后,用户 andy 在 ROW 类型 rtype2 之下创建名为 rtype3 的
ROW 类型。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 824
如果现在用户 jeff 试图以 CASCADE 选项从用户 mary 取消对ROW 类型
rtype1 的 Under 权限,则 REVOKE 语句失败,因为 ROW 类型 rtype2 仍在
被 ROW 类型 rtype3 所使用。
以 RESTRICT 选项控制 REVOKE 的作用域
当任何下列依赖存在时,RESTRICT 关键字导致 REVOKE 语句失败:

视图依赖于您正在尝试取消的 Select 权限。

外键约束依赖于您尝试取消的 References 权限。

您尝试从一用户取消权限,该用户后来将此权限授予了另一用户或角色。
如果 REVOKE 指定有将该权限授予其他用户的权限,但尚未使用那项权利的用
户,则 REVOKE 不会失败。例如,假设当用户 clara 将对 customer 表的
Select 权限授予用户 ted 时,它指定 WITH GRANT OPTION。进一步假设用户
ted,接着将对 customer 表的 Select 权限授予用户 tania。clara 发出了的下
列语句不起作用,因为 ted 已使用了它的授权来授予 Select 权限:
REVOKE SELECT ON customer FROM ted RESTRICT;
相反,如果用户 ted 未将 Select 权限授予 tania 或任何其他用户,则同样的
REVOKE 语句成功。 即使 ted 确将 Select 权限授予另一用户,下列语句的每
一条均成功:
REVOKE SELECT ON customer FROM ted CASCADE;
REVOKE SELECT ON customer FROM ted;
安全管理选项
结合 GRANT 语句,REVOKE 语句通过指定哪些用户或角色持有需要访问数据
库或数据库之内的对象的权限,支持 GBase 8s 的自主访问控制(DAC)数据安
全特性。
REVOKE 语句的“安全管理选项”,与 GRANT 语句的对应选项相似,支持一系
列附加的数据安全特性,称为基于标签的访问控制(LBAC)。 这些特性使得
GBase 8s 能基于将包含在数据对象中的行安全标签或列安全标签与用户标签及其
他已经授予了正在寻求访问的用户的其他凭证进行比较,允许或拒绝对受保护的
数据的访问。
安全管理选项

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 825

使用这些 REVOKE 语句安全管理选项是受限的:

仅“数据库服务器管理员”(DBSA),缺省为用户 gbasedbt,可使用
REVOKE DBSECADM 语句来取消 DBSECADM 角色。

仅持有 DBSECADM 角色的用户可发出 REVOKE EXEMPTION、
REVOKE SECURITY LABEL 或 REVOKE SETSESSIONAUTH 语句。
DBSECADM 子句
REVOKE DBSECADM 语句防止被授予了 DBSECADM 角色的用户发出可创
建、改变、重命名或删除安全对象的 DDL 语句,安全对象包括安全策略、安全
标签和安全组件。
DBSECADM 子句

元素
描述
限制
语法
user 要从其取消角色的用户 必须为用户的授权标识符 所有者名称
DBSECADM 角色是仅 DBSA 可取消的内建角色。与用户定义的角色不同,
DBSECADM 角色的作用域是 GBase 8s 实例的所有数据库。用户定义的角色的
作用域是在其中创建该角色的数据库。DBSA 不必在同一服务器的其他数据库中
重新发出 REVOKE DBSECADM 语句。
仅持有 DBSECADM 角色的用户可发出下列创建或更改安全对象的 SQL 语句:

ALTER SECURITY LABEL COMPONENT

CREATE SECURITY LABEL

CREATE SECURITY LABEL COMPONENT

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 826

CREATE SECURITY POLICY

DROP SECURITY LABEL

DROP SECURITY LABEL COMPONENT

DROP SECURITY POLICY

RENAME SECURITY LABEL

RENAME SECURITY LABEL COMPONENT

RENAME SECURITY POLICY
仅持有 DBSECADM 角色的用户可使用下列 SQL 语句来引用受安全策略保护的
表:

ALTER TABLE ... ADD SECURITY POLICY

ALTER TABLE ... ADD ... IDSSECURITYLABEL [DEFAULT label]

ALTER TABLE ... ADD ... [COLUMN] SECURED WITH

ALTER TABLE ... DROP SECURITY POLICY

ALTER TABLE ... MODIFY ... [COLUMN] SECURED WITH

ALTER TABLE ... MODIFY ... DROP COLUMN SECURITY

CREATE TABLE ... COLUMN SECURED WITH

CREATE TABLE ... IDSSECURITYLABEL [DEFAULT label]

CREATE TABLE ... SECURITY POLICY
不持有 DBSECADM 角色的用户也不可发出下列 GRANT 和 REVOKE 语句:

GRANT EXEMPTION

GRANT SECURITY LABEL

GRANT SETSESSIONAUTH

REVOKE EXEMPTION

REVOKE SECURITY LABEL

REVOKE SETSESSIONAUTH
可跟在 FROM 关键字之后的 USER 关键字是可选的,且不起作用,但 DBSA
在 REVOKE DBSECADM 语句中指定的任何授权标识符必须为单个用户的标识
符,而不是角色的标识符。user 不可为发出此 REVOKE DBSECADM 语句的
DBSA.
在下例中,DBSA 取消用户 niccolo 的 DBSECADM 角色:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 827
REVOKE DBSECADM FROM niccolo;
如果此语句执行成功,则用户 niccolo 可不再执行以上罗列的操作。
在取消 DBSECADM 角色之后,仅 DBSA 可再次将它授予被取消了它的用户。
EXEMPTION 子句
REVOKE EXEMPTION 语句通过启用该用户已被豁免的指定的安全策略的一个或
所有规则,修改指定的用户(或用户列表)的安全凭证。
EXEMPTION 子句

元素
描述
限制
语法
policy 被取消豁免的安全策略 在数据库中必须存在
标识符
user
要被取消豁免的用户
必须为用户的授权标识符 所有者名称
仅持有 DBSECADM 角色的用户可发出 REVOKE EXEMPTION 语句。
有关取消豁免的规则
跟在 ON 关键字之后的关键字指定取消豁免的安全策略(其标识符跟在 FOR 关
键字之后)的预定义的访问规则。当从其取消豁免的用户访问受指定的策略保护
的表时,应用取消豁免的访问规则。要了解与安全策略相关联的读访问和写访问
的预定义规则的描述,请参阅 与安全策略相关的规则 部分。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 828
下列 REVOKE EXEMPTION 语句的关键字标识此语句可适用于以前豁免的用户的特
定的 IDSLBACRULES 规则:

IDSLBACREADARRAY 适用于指定的安全策略的
IDSLBACREADARRAY 规则的用户。 对于无豁免的用户,此规则要求
用户安全标签的每一数组组件必须大于或等于数据行安全标签的相应的数
组组件。

IDSLBACREADSET 适用于指定的安全策略的 IDSLBACREADSET 规
则的用户。对于无豁免的用户,此规则要求该用户安全标签的每一集合组
件必须包括数据行安全标签的集合组件。

IDSLBACREADTREE 适用于指定的安全策略的 IDSLBACREADTREE
规则的用户。对于无豁免的用户,此规则要求该用户安全标签的树组件必
须包括数据行安全标签的树组件中的至少一个元素,或包括一个这样元素
的祖先。

IDSLBACWRITEARRAY WRITEDOWN 从指定的安全策略的
IDSLBACWRITEARRAY 规则的一个方面豁免该用户。失去此豁免的用
户不可写到受标签保护的行,该标签包括低于在该用户的标签中级别的数
组组件级别。

IDSLBACWRITEARRAY WRITEUP 从指定的安全策略的
IDSLBACWRITEARRAY 规则的一个方面豁免该用户。失去此豁免的用
户不可写到受标签保护的行,该标签包括高于在该用户的标签中的级别的
数组组件级别。

IDSLBACWRITEARRAY (不带有 WRITEDOWN 或 WRITEUP 关键
字)适用于指定的安全策略的 IDSLBACWRITEARRAY 规则的用户。
失去此豁免的用户不可写到其数组组件级别高于或低于在该用户的标签中
的级别的行。

IDSLBACWRITESET 适用于指定的安全策略的 IDSLBACWRITESET
规则的用户。对于无豁免的用户,那个规则要求该用户安全标签的每一集
合组件必须包括数据行安全标签的集合组件。

IDSLBACWRITETREE 适用于指定的安全策略的
IDSLBACWRITETREE 规则的用户。对于无豁免的用户,那个规则要求

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 829
该用户安全标签的每一树组件必须包括数据行安全标签的树组件中至少一
个元素,或包括一个这样元素的祖先。

ALL 从指定的安全策略的所有 IDSLBACRULES 规则取消豁免。
在下例中,DBSECADM 从用户 manoj 和 sam 取消对 MegaCorp 安全策略的所
有规则的豁免:
REVOKE EXEMPTION ON RULE ALL FOR MegaCorp FROM manoj, sam;
安全策略和豁免的被授予者
豁免仅适用于单个安全策略的规则,其名称跟在 FOR 关键字之后。由于受到保
护的表可有多个安全标签,但只有一个安全策略,因此撤销豁免可防止没有充分
的安全凭证的用户访问有指定的安全策略保护的表中的数据。
如果在数据库中不存在指定的策略,则 REVOKE EXEMPTION 语句失败并报
错。
可跟在 FROM 关键字之后的 USER 关键字是可选的,且没有作用,但在
REVOKE EXEMPTION 语句中指定的任何授权标识符必须是单个用户的标识符,
而不是角色的标识符。此 user 不可为发出同一 REVOKE EXEMPTION 语句的
DBSECADM。
在下例中,DBSECADM 从用户 lynette 取消对 MegaCorp 安全策略的规则
IDSLBACREADARRAY 的豁免:
REVOKE EXEMPTION ON RULE IDSLBACREADARRAY FOR MegaCorp
FROM lynette;
此豁免恢复对所有后续读操作的数组组件的读存取规则,用户 lynette 尝试在受
指定的策略的安全标签保护的表进行读操作。
当 REVOKE EXEMPTION 语句成功地取消用户的豁免时,数据库服务器更新系
统目录的 syssecpolicyexemptions 表来取消注册被取消的豁免(或如果在 FROM
关键字之后罗列几个用户,则为多个豁免)。
SECURITY LABEL 子句
REVOKE SECURITY LABEL 语句取消由一个或多个用户持有的安全标签(或指
定的安全策略的所有安全标签)。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 830
SECURITY LABEL 子句

元素
描述
限制
语法
label 现有的安全标签的名称
必须存在指定的安
全 policy 的标签
标识符
policy 此 label 的安全策略
必须在数据库中已
存在
标识符
user
从其取消标签的用户
必须为用户的授权
标识符
所有者名称
仅持有 DBSECADM 角色的用户可发出 REVOKE SECURITY LABEL 语句。
安全标签是总与安全策略相关联的数据库对象。那个策略定义构成该安全标签的
一系列有效的安全组件。该标签存储该安全策略的每一组件的一个或多个值的集
合。
DBSECADM 可将安全标签与下列实体相关联:

数据库表的列,列安全标签可保护列

数据库表的行,行安全标签可保护行

用户,其用户安全标签(以及从已经授予了该用户的安全策略的规则的任
何豁免)称为该用户的安全凭证。
当持有特定的安全策略的安全标签的用户尝试访问受到同一安全策略的行安全标
签保护的行时,数据库服务器将用户安全标签的值的集合与行安全标签的值的集
合相比较,以确定该用户是否应被允许访问该数据。类似地,LBAC 考虑用户安
全标签与列安全标签,以确定该用户的凭证是否应被允许访问受保护的列。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 831
GRANT SECURITY LABEL 和 REVOKE SECURITY LABEL 语句使得
DBSECADM 能控制用户与标签的关联。(通过仅 DBSECADM 可执行的
CREATE TABLE 或 ALTER TABLE 语句的选项,而不是通过 GRANT
SECURITY LABEL 语句,将受保护的表中的数据值与行安全标签或列安全标签
相关联。)
紧跟在 LABEL 关键字之后, policy.* 规范中的星号(*)指示数据库服务器来
取消 policy 的每一安全标签。如果您未用星号指定 policy.label,则那个 label 必
须为指定的 policy 的安全标签的名称。在此情况下,如果该语句成功,则仅从用
户列表取消那个安全标签。
跟在 FROM 关键字之后的 USER 关键字是可选的,但在 REVOKE SECURITY
LABEL 语句中指定的任何授权标识符都必须是单个用户的标识符,而不是角色的
标识符。
访问规范
从其取消安全标签的用户的列表可可选地后跟关键字,以指定对该标签的安全策
略保护的数据的访问的类型。

FOR WRITE ACCESS
这些关键字将该标签限定到 IDSLBACRULES 的写访问规则,
即 IDLSBACWRITEARRAY、IDLSBACWRITESET 和
IDLSBACWRITETREE。

FOR READ ACCESS
这些关键字将该标签限定到 IDSLBACRULES 的读访问规则,
即 IDLSBACWREADARRAY、IDLSBACREADSET 和
IDLSBACREADTREE。

FOR ALL ACCESS
这些关键字将该标签应用到以上罗列的所有读和写访问规则。如
果 REVOKE SECURITY LABEL 不包括 FOR ... ACCESS 规
范,则此选项作为缺省值生效。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 832
要获取更多关于这些基于标签的读和写访问的 IDSLBACRULES 规则的信息,请参
阅 与安全策略相关的规则。要获取更多关于对这些可为特定的安全策略授予的规
则的豁免的信息,请参阅 有关取消豁免的规则。
取消用户安全标签的示例
下列三个语句分别地创建三个名为 level、compartments 和 groups 的安全标签
组件:

CREATE SECURITY LABEL COMPONENT

level ARRAY ['TS','S','C','U'];



CREATE SECURITY LABEL COMPONENT

compartments SET {'A','B','C','D'};


CREATE SECURITY LABEL COMPONENT

groups TREE ('G1' ROOT,

'G2' UNDER ROOT,

'G3' UNDER ROOT);
下列语句基于上述三个组件创建名为 secPolicy 的安全策略:

CREATE SECURITY POLICY secPolicy COMPONENTS

level, compartments, groups;
下列语句创建名为 secLabel1 的安全标签:

CREATE SECURITY LABEL secPolicy.secLabel1

COMPONENT level 'S',

COMPONENT compartments 'A', 'B',

COMPONENT groups 'G2';
下列语句将此对读访问的安全标签授予用户 sam:

GRANT SECURITY LABEL secPolicy.secLabel1

TO sam FOR READ ACCESS;
下列语句从用户 sam 取消对读访问的安全标签。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 833

REVOKE SECURITY LABEL secPolicy.secLabel1

FROM sam FOR READ ACCESS;
当 REVOKE SECURITY LABEL 语句成功地取消由用户持有了的安全标签时,数
据库服务器更新系统目录的 sysseclabelauth 表来从那些持有那个安全标签的用户
列表移除该用户。
SETSESSIONAUTH 子句
REVOKE SETSESSIONAUTH 语句从一个或多个用户或角色取消
SETSESSIONAUTH 权限。SETSESSIONAUTH 权限允许还持有 DBA 权限的用
户使用 SET SESSION AUTHORIZATION 语句来将会话授权设置为一系列指定的
用户之一。
SETSESSIONAUTH 子句

元素
描述
限制
语法
role 要从其取消权限的角色
必须为角色的授权
标识符
所有者名称
user 在 FROM 关键字之后,是要从其
取消权限的用户。在 ON 关键字
之后,是被授权者可在 SET
AUTHORIZATION 语句中指定其身
份的用户。
必须为用户的授权
标识符
所有者名称
仅持有 DBSECADM 角色的用户可取消 SETSESSIONAUTH 权限。
跟在 ON 关键字之后的用户或 PUBLIC 规范,指定在使用 SET SESSION
AUTHORIZATION 语句时, SETSESSIONAUTH 权限的被授权者不再能够使用
谁的身份。这可为用户或 PUBLIC,但不可为角色。如果指定 PUBLIC,则该权
限的被授权者不再有能力使用任意数据库用户的身份。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 834
可跟在 FROM 关键字之后的 USER 和 ROLE 关键字是可选的。user 或 role
都不可为发出 REVOKE SETSESSIONAUTH 语句的 DBSECADM 角色的持有
者。FROM 子句不可指定 PUBLIC。
下例授予用户 sam 将会话授权设置为用户 lynette 和 manor 的能力:
REVOKE SETSESSIONAUTH ON lynette, manoj TO sam;
下一示例从用户 lynette 取消将会话授权设置为 PUBLIC 的能力:
REVOKE SETSESSIONAUTH ON PUBLIC FROM lynette;
此语句取消的权限的 PUBLIC 作用域已使得用户 lynette 能使用她在 SET
SESSION AUTHORIZATION 语句中指定的任何用户的访问权限和安全凭证。

vacuum_cost_page_hit
参数说明:清理一个在共享缓存里找到的缓冲区的预计开销。它代表锁住缓冲池、
查找
共享的Hash 表、扫描页面内容的开销。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:整型,0~10000。
默认值:1