OF TYPE 子句

使用 OF TYPE 子句为对象关系数据库创建类型表。类型表是您将已命名的 ROW 数据类型指定到目标表。

OF TYPE 子句
元素 描述 限制 语法
row_type 该表所基于的 ROW 类型的名称 必须是在本地数据库中注册的已命名 ROW 数据类型 标识符
supertable 该表继承其属性的表名称 必须作为类型表存在 标识符

如果您使用 UNDER 子句,则 row_type 必须从 supertable 的 ROW 类型派生得到。类型层次结构必须已经存在,其中新表的已命名 ROW 类型是 supertable 的已命名 ROW 类型的子类型。

不规则行是来自表层次结构的一组行的集合,层次结构中的类型表的列数不固定。一些 API ,例如 GBase 8s ESQL/CGBase 8s JDBC Driver,不支持返回 jagged 行的查询。

当创建类型表时,CREATE TABLE 不能为它的列指定名称,因为列名称在创建 ROW 类型时已经声明了。类型表的列对应于指定 ROW 类型的字段。ALTER TABLE 已经不能向类型表添加其它列。

例如,假设您创建一个指定的 ROW 类型 student_t 如下:
CREATE ROW TYPE student_t
          (name        VARCHAR(30),
          average     REAL,
          birthdate   DATETIME YEAR TO DAY);
如果在 OF TYPE 子句中为表指定 student_t 类型,则该表是一张类型表,该表的列与指定 ROW 类型 student_t 的字段名称和数据类型都相同(顺序也相同)。 例如,以下 CREATE TABLE 语句创建了一个类型是 student_t 的名为 students 的类型表:
CREATE TABLE students OF TYPE student_t;
students 表有以下列:
name      VARCHAR(30)
          average   REAL
          birthdate DATETIME YEAR TO DAY

有关指定 ROW 类型的更多信息,请参阅 CREATE ROW TYPE 语句

1 请参阅 多列约束格式
2 请参阅 Options 子句