返回首页

gbase数据、南大通用产品文档:GBase8s不透明数据类型

更新日期:2024年09月11日

这些主题介绍了如何使用 lvarchar 、fixed binary 和 var binary 数据类型从 GBase 8s
ESQL/C 程序访问不透明数据类型。
使用这些 GBase 8s ESQL/C 数据类型来表示不透明数
据类型,它们将传输到 GBase 8s 。

这些主题中的信息仅适用于您使用 GBase 8s 作为您的数据库服务器。

您可使用 TRUNCATE 语句来快速地从表中移除所有行,同时还移除所有对应的索引数
据。在提交该事务之后,您不可恢复删除了的行。您可对包含任何列类型(包括智能大对
象)的表上使用 TRUNCATE 语句。
使用 TRUNCATE 语句来移除行的速度比使用 DELETE 语句来移除它们快。在
TRUNCATE 语句之后,不必立即运行 UPDATE STATISTICS 语句。成功地执行
TRUNCATE 之后,GBase 8s 自动地更新该表及其系统目录中的索引的统计信息和分布情
况,以展示在该表中或在它的 dbspace 分区中没有任何行。
要了解日志记录的描述,请参阅 事务日志记录。
TRUNCATE 是数据定义语言语句,如果在该表上定义任何触发器,则该语句不激活
DELETE 触发器。要了解关于使用触发器的说明,请参阅 创建和使用触发器。
如果 TRUNCATE 语句指定的表是 typed 表,则成功的 TRUNCATE 操作从那个表中以
及从该表层级结构内的所有子表中移除所有行和 B-tree 结构。TRUNCATE 不等同于
DELETE 语句的 ONLY 关键字,
DELETE 语句将操作限制在 typed 表层级结构内的单个
表。
GBase 8s 始终对 TRUNCATE 操作进行日志记录,即使对非日志记录的表也是如此。在支
持事务日志记录的数据库中,
在同一事务之内的 TRUNCATE 之后,
仅 SQL 的 COMMIT
WORK 或 ROLLBACK WORK 语句是有效的。
要获取关于使用 TRUNCATE 语句对性能
的影响的信息,
请参阅
《GBase 8s 性能指南》

要了解完整的语法,
请参阅
《GBase 8s SQL
指南:语法》。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 158 -

如果您是表的所有者(即,如果您创建了它),则您拥有对那个表的所有权限。否则,您
可通过查询系统目录来确定您对于某个表拥有的权限。系统目录由描述数据库结构的系统
表构成。
对每一表所授予的权限都记录在 systabauth 系统表中。
要显示这些权限,
您还必须
知道该表的唯一标识符编号。在 systables 系统表中指定此编号。要显示对 orders 表授予的
权限,您可输入下列 SELECT 语句:
SELECT * FROM systabauth
WHERE tabid = (SELECT tabid FROM systables

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 179 -

WHERE tabname = 'orders');
该查询的输出类似于下列示例:
grantorgrantee tabid tabauth

tfecitmutator 101 su-i-x--
tfecitprocrustes101 s--idx--
tfecitpublic 101 s--i-x--
授权者是授予权限的用户。授权者通常是表的所有者,但所有者可为授权者授权了的另一
用户。被授权者是将权限授予其的用户,被授权者 public意味着有 Connect 权限的任何用
户。如果您的用户名未出现,则您仅拥有授予给了 public 的那些权限。
tabauth 列指定授予的权限。
此列的每一行中的字母是权限名称的首字母,
除了 i 表示 Insert
以及 x 表示 Index 之外。在此示例中,public 具有 Select、Insert 和 Index 权限。仅用
户 mutator 具有 Update 权限,仅用户 procrustes 具有 Delete 权限。
在数据库服务器为您执行任何操作(例如,执行 DELETE 语句)之前,它都执行类似于前
一查询的查询。如果您不是该表的所有者,且如果数据库服务器找不到您的用户名
或 public 对该表的必要权限,则它拒绝执行该操作。