Abr*_*m P 8 sql postgresql enums types union-types
是否可以在Postgres中创建代数数据类型,然后将其用作列类型?
例如:
CREATE TYPE hoofed AS ENUM('horse', 'goat');
CREATE TYPE monkey AS ENUM('chimp','macaque');
CREATE TYPE ANIMAL AS ENUM(hoofed, monkey);
Run Code Online (Sandbox Code Playgroud)
这失败了:
syntax error at or near "hoofed"
LINE 1: CREATE TYPE ANIMAL AS ENUM(hoofed, monkey);
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?
最终,我希望能够做到的是这样的事情:
CREATE TABLE zoo (
a ANIMAL,
name text
);
INSERT INTO zoo(a, name) VALUES('horse', 'bob');
INSERT INTO zoo(a, name) VALUES('macaque', 'jimmy');
Run Code Online (Sandbox Code Playgroud)
并且两个记录都是独立有效的.
编辑:@ Abihabi87下面的回复确实允许我创建一个实际的产品类型,但它仍然不允许我根据需要创建一个联合类型.
你不能从别人枚举类型创建类型枚举:
你可以创建像这样的ANIMAL:
CREATE TYPE ANIMAL AS (h hoofed,m monkey);
Run Code Online (Sandbox Code Playgroud)
使用示例:
CREATE TABLE your_table
(
a ANIMAL
);
INSERT INTO your_table(a) select (select ('horse','macaque')::ANIMAL);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
509 次 |
| 最近记录: |