在数据库中创建表时,在缺省情况下将表级别特权授予哪些用户,符合 ANSI 标准的数据库和不符合 ANSI 标准的数据库是不同的。ANSI 标准指定数据库服务器将任何表级别特权只授予表所有者(以及 DBA,如果他们不是同一用户)。然而,在不符合 ANSI 标准的数据库中,会将特权授予 PUBLIC。另外,数据库服务器提供了两个表级别特权:Alter 和 Index,这两个特权没有包括在 ANSI 标准中。
要运行用户定义的例程,您必须具有该例程的 Execute 特权。在为符合 ANSI 标准的数据库创建仅所有者有特权的过程时,只有用户定义的例程的所有者具有 Execute 特权。在不符合 ANSI 标准的数据库中创建仅所有者有特权的例程时,缺省情况下数据库服务器会将 Execute 特权授予 PUBLIC。
将 NODEFDAC 环境变量设置为“yes”时,不符合 ANSI 标准的数据库会模拟符合 ANSI 标准的数据库的行为:在用户创建表或仅所有者有特权的例程时,不自动向 PUBLIC 授予特权。有关特权的更多信息,请参阅授予和限制对数据库的访问权以及 GBase 8s SQL 指南:语法 中对 GRANT 语句的描述。