如何在 Redshift 中创建枚举?
Posted
技术标签:
【中文标题】如何在 Redshift 中创建枚举?【英文标题】:How to create enum in Redshift? 【发布时间】:2018-04-02 10:45:53 【问题描述】:我想在 redshift 上创建一个枚举类型但不能。
CREATE TYPE status AS ENUM ('Yes', 'No');
错误是:
An error occurred when executing the SQL command:
CREATE TYPE status AS ENUM ('Yes', 'No')
ERROR: syntax error at or near "ENUM"
Position: 23
CREATE TYPE status AS ENUM ('Yes', 'No')
. ^
1 statement failed
我使用的版本是:
PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3), Redshift 1.0.1885
无法确定查询是否错误或此版本不支持?
【问题讨论】:
【参考方案1】:正如 Redshift documentation 中所述,Redshift 不支持枚举类型。
不幸的是,Redshift 不支持我想到的两种解决方法:检查约束和外键约束(值在引用表中的位置)。
我的建议是为该类型创建一个引用表并使用外键引用。尽管 Redshift 不强制执行约束,但至少意图是明确的。
【讨论】:
以上是关于如何在 Redshift 中创建枚举?的主要内容,如果未能解决你的问题,请参考以下文章
REDSHIFT:如何生成一系列数字而不在 redshift (Postgres 8.0.2) 中创建名为“数字”的表?