暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Gbase8s CREATE ROW TYPE 语句2

kelei2006 2022-08-17
264

创建子类型
大多数情况下,当命名 ROW 类型作为另一种命名 ROW 类型(其超类型)的子类型创建时候您
添加新的字段。要创建命名的 ROW 类型的字段,请使用 字段定义 中描述的字段定义子句。当创
建子类型时,必须使用 UNDER 关键字来将超类型与希望创建的已命名 ROW 类型相关联。下一
个示例将在 person_t 类型下创建 employee_t 类型:
CREATE ROW TYPE employee_t (salary NUMERIC(10,2),
bonus NUMERIC(10,2)) UNDER person_t;
employee_t 类型继承 person_t 的所有字段并有两个另外的字段:salary 和 bonus ;但是
person_t 类型没有改变。
类型层次结构
当创建子类型时,会创建类型层次结构。在类型层次结构中每个您创建的子类型从单个超类型继承
其属性。如果在 person_t 下创建命名 ROW 类型 customer_t ,customer_t 继承 person_t 的所
有字段。如果您在 customer_t 下创建另一个命名 ROW 类型 salesrep_t ,则 salesrep_t 继承
customer_t 的所有字段。
因此,salesrep_t 继承所有 customer_t 从 person_t 继承的字段,以及所有特别为 customer_t 定
义的字段。有关类型继承的讨论,请参阅 GBase 8s SQL 教程指南 。
创建子类型的过程
在您将命名 ROW 类型作为继承层次结构中子类型创建之前,请检查以下消息:
⚫ 验证您已授权创建新的数据类型。必须在数据库上拥有 Resource 特权。可以在 sysusers
系统目录表中找到此信息。
⚫ 验证超类型存在。可以在 sysxtdtypes 系统目录表中找到此信息。
⚫ 验证您已授权创建该超类型的子类型。必须拥有超类型上的 Under 特权。可以在 sysusers
系统目录表中找到此信息。
⚫ 验证您已命名 ROW 类型声明的名称是唯一的。在兼容 ANSI 的数据库中,owner.type
组合必须在数据库中是唯一的。要验证新的数据类型的名称是否唯一的。在不兼容 ANSI
的数据库中,名称必须在数据库中的数据类型名称中是唯一的,要验证新的数据类型的名
称是否唯一,请检查 sysxtdtypes 系统目录表,名称必须不是现有数据类型的名称。
⚫ 如果您正在为 ROW 类型定义字段,则检查没有复制字段名称同时存在于新的和继承的字
段中。
重要: 当创建子类型时,不能重新定义它为其超类型继承的字段。如果您试图重新定义这些字
段,则数据库服务器返回一个错误。
不能将约束应用到已命名 ROW 数据类型,但是可以在创建或更改使用已命名 ROW 类型的表时
指定约束。您也可以在某个单独的 ROW 类型的字段上指定 NOT NULL 约束。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论