定义元素类型

元素类型可为除了 TEXT、BYTE、SERIAL、SERIAL8 或 BIGSERIAL 之外的任何数据类型。您可使用集合类型的元素嵌套集合类型。

每个元素必须是同一类型的。例如,如果集合数据类型的元素类型是 INTEGER,则每个元素的类型必须是 INTEGER。

如果数据库服务器确定字符串的集合的某些元素是 VARCHAR 数据类型(其长度限定为 255 或更少的字节),但其他元素长于 255 字节,则此限制会发生一个例外。在此情况下,集合构造函数可将 CHAR(n) 数据类型指定给所有元素,n 是最长的元素以字节计的长度。如果这不是想要的结果,则您可将该集合强制转型为 LVARCHAR,来防止在该集合的元素中填充额外的长度,如此示例中所示:
LIST {'first character string longer than 255 bytes . . . ',
        'second character string longer than 255 bytes . . . ',
        'another character string'} ::LIST (LVARCHAR NOT NULL)

要获取附加的信息,请参阅 集合构造函数

如果集合的元素类型是未命名的 ROW 类型,则未命名的 ROW 类型不可包含持有未命名的 ROW 类型的字段。也就是说,集合不可包含嵌套的未命名的 ROW 数据类型。

集合的元素不可为 NULL。当您定义一列为集合数据类型时,您必须使用 NOT NULL 关键字来指定该集合的元素不可为 NULL。

对集合数据类型的权限就是数据库列的那些权限。您不可在集合的个别元素上指定权限。