如何在 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) 中创建名为“数字”的表?

尝试在 Redshift 中创建日期表

在 redshift 中创建数据库特定用户

如何从枚举在 Kotlin 中创建编译时常量?

如何在EF6 Code First中创建与枚举对应的表?

为啥在redshift中创建表需要很多时间?