CREATE ROW TYPE address_t ( street VARCHAR(20), city VARCHAR(20), state CHAR(2), zip VARCHAR(9) ); CREATE TABLE employee ( name VARCHAR(30), address address_t, salary INTEGER );
在上述 CREATE TABLE 语句中,address 列具有 address_t 类型的 street、city、state 和 zip 字段。因此,employee 表(它只有 3 列)包含 name、street、city、state、zip 和 salary 的值。使用点符号表示法来访问对行类型定义的列的个别字段。有关使用点符号表示法来访问列字段的信息,请参阅 GBase 8s SQL 指南:教程。
INSERT INTO employee VALUES ('John Bryant', ROW('10 Bay Street', 'Madera', 'CA', 95400)::address_t, 55000);
对于对命名行类型执行的插入或更新操作,不强制执行强类型化。要确保行值具有命名行类型,必须显式地将强制转型为命名行类型以生成具有命名行类型的值,如上一示例所示。INSERT 语句插入三个值,其中一个是包含四个值的行类型值。更明确地说,此操作对 name 和 salary 列插入一元值,但它创建 address_t 类型的实例并将其插入到 address 列中。
有关如何插入、更新和删除对行类型定义的列的更多信息,请参阅 GBase 8s SQL 指南:教程。