【问题标题】:postgresql enum Temporalpostgresql 枚举时间
【发布时间】:2026-02-04 02:35:01
【问题描述】:

我想为我使用此查询的枚举添加值:

ALTER TYPE enum_missions_status ADD VALUE 'COMPLETED'

我的主表是成功的,但是当我尝试这个查询时:

ALTER TYPE enum_historisationMissions_status ADD VALUE 'COMPLETED'

对于我的临时表:https://wiki.postgresql.org/wiki/SQL2011Temporal

我有这个错误信息:

Unhandled rejection SequelizeBaseError: type "enum_historisationmissions_status" does not exist

他把我的 M 改成了 m。

当我尝试时:

 ALTER TYPE "enum_historisationMissions_status" ADD VALUE 'COMPLETED'

我有这个错误:

Unhandled rejection SequelizeBaseError: type "enum_historisationmissions_status" does not exist

如何将枚举添加到临时表?

【问题讨论】:

    标签: postgresql temporal-database


    【解决方案1】:

    一般来说,SQL 是不区分大小写的。因此enum_historisationMissions_statusenum_historisationmissions_status 表示同一个对象。为了避免这种行为,您可以在双引号中包含名称,例如"enum_historisationMissions_status" 用大小写字母命名对象。

    【讨论】:

    • 添加到这个。 SQL 标准规定不带引号的标识符折叠为大写。由于可读性和历史先例,PostgreSQL 折叠为小写。这两种行为在功能上非常相似。如果您通过引用它在不同的 SQL 兼容数据库中创建了一个对象:“MyTable”然后通过调用它来引用它 MyTable 实际上会引用 MYTABLE(或在 pgsql mytable 中)并且它不会匹配。通常,要么引用所有内容,要么什么都不引用,您在任何一个数据库中都不会遇到这个问题。