【发布时间】:2017-11-09 22:24:42
【问题描述】:
是否可以在 Postgres 中创建代数数据类型,然后将其用作列类型?
例如:
CREATE TYPE hoofed AS ENUM('horse', 'goat');
CREATE TYPE monkey AS ENUM('chimp','macaque');
CREATE TYPE ANIMAL AS ENUM(hoofed, monkey);
这失败了:
syntax error at or near "hoofed"
LINE 1: CREATE TYPE ANIMAL AS ENUM(hoofed, monkey);
有可能做这样的事情吗?
最终我希望能够做到的事情是这样的:
CREATE TABLE zoo (
a ANIMAL,
name text
);
INSERT INTO zoo(a, name) VALUES('horse', 'bob');
INSERT INTO zoo(a, name) VALUES('macaque', 'jimmy');
并且两个记录都是独立有效的。
编辑:@Abihabi87 下面的回复确实允许我创建一个产品类型,但它仍然不允许我根据需要创建一个联合类型。
【问题讨论】:
标签: sql postgresql types enums union-types