PostgreSQL枚举类型元素旁的+符号有什么含义?
PostgreSQL枚举类型中元素后+符号的含义
那个+符号没有任何业务层面的特殊含义,它只是psql命令行客户端的格式化输出标记,用来表示当前行的字段内容被换行拆分,下一行的内容属于同一个字段的延续。
看你给出的第一个查询结果:
Schema | Name | Internal name | Size | Elements | Owner | Access privileges | Description --------+-------------------+-------------------+------+----------+----------+-------------------+------------- public | medical_code_type | medical_code_type | 4 | cpt +| postgres | | | | | | icd +| | | | | | | hcpcs | | |
这里Elements字段包含三个枚举值,psql为了让表格排版更清晰,把这个字段的内容拆成了多行显示。前两行末尾的+就是在告诉你:“这个字段的内容还没说完,下一行的内容是同一个Elements字段的一部分”,最后一行是该字段内容的结尾,所以没有+。
当你执行ALTER TYPE medical_code_type ADD VALUE 'icd-10-cm'后,Elements字段现在有四个值,psql同样做了换行拆分,前三个值所在的行末尾带+,新添加的icd-10-cm是字段的最后一部分,所以不带+:
Schema | Name | Internal name | Size | Elements | Owner | Access privileges | Description --------+-------------------+-------------------+------+-----------+----------+-------------------+------------- public | medical_code_type | medical_code_type | 4 | cpt +| postgres | | | | | | icd +| | | | | | | hcpcs +| | | | | | | icd-10-cm | | | (1 row)
如果要验证这一点,你可以用更直接的方式查询枚举值:
SELECT unnest(enum_range(NULL::medical_code_type));
这个查询会把每个枚举值单独显示为一行,结果里不会有任何+符号,这也能佐证+只是psql的输出格式标记,和枚举类型本身的定义、行为没有关系。
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

