将新表添加到表层次结构

定义表层次结构之后,不能使用 ALTER TABLE 语句来对层次结构中的表添加、删除或修改列。然而,倘若新的子类型和子表不会干扰现有的继承关系,那么可将新的子类型和子表添加到现有层次结构中。下图说明了一种可用来将类型和相应的表添加至现有层次结构的方法。虚线指示添加的子类型和子表。

图: 可以如何将子类型和子表添加至现有继承层次结构的示例


并列显示了四项的两个层次结构。一个是类型层次结构,另一个是表层次结构。 在层次结构中,父代位于子代顶部。类型层次结构从上到下依次为:“person_t”、“employee_t”、“sales_rep_t”和“us_sales_rep_t”。从“sales_rep_t”到“us_sales_rep_t”的继承箭头是虚线。“us_sales_rep_t”周围的矩形由虚线构成。 表层次结构从上到下依次为:“person”、“employee”、“sales_rep”和“us_sales_rep”。 从“sales_rep”到“us_sales_rep”的继承箭头是虚线。“us_sales_rep”周围的矩形由虚线构成。 类型层次结构和表层次结构对应的每项之间都有双向箭头直接连接。 “person_t”对应“person”。“employee_t”对应“employee”。“sales_rep_t”对应“sales_rep”。 “us_sales_rep_t”对应“us_sales_rep”。
下列语句说明可以如何将类型和表添加至图 1 显示的继承层次结构:
CREATE ROW TYPE us_sales_rep_t (domestic_sales DECIMAL(15,2)) 
UNDER employee_t;

CREATE TABLE us_sales_rep OF TYPE us_sales_rep_t
UNDER sales_rep;
也可以添加从现有超类型及其并行超表分出来的子类型和子表。下图显示了可以如何将 customer_t 类型和 customer 表添加至现有层次结构。在此示例中,customer 表和 employee 表都从 person 表继承属性。

图: 在现有超类型和超表下面添加类型和表的示例


并列显示了三项的两个层次结构。一个是类型层次结构,另一个是表层次结构。 在层次结构中,父代位于子代顶部。类型层次结构从上到下依次为:“person_t”、“employee_t”和“sales_rep_t”。 还出现了“customer_t”。它位于虚线矩形中。从“person_t”到“customer_t”也有虚线继承箭头。 “customer_t”下指向下方的虚线继承箭头表示可能有其他未显示的子代。 表层次结构从上到下依次为:“person”、“employee”和“sales_rep”。 还出现了“customer”。它位于虚线矩形中。从“person”到“customer”也有虚线继承箭头。 从“customer”指向下方的虚线继承箭头表示可能有其他未显示的子代。

下列语句分别在 person_t 类型和 person 表下面创建 customer_t 类型和 customer 表:
CREATE ROW TYPE customer_t (cust_num INTEGER) UNDER person_t;

CREATE TABLE customer OF TYPE customer_t UNDER person;