PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Das Umbenennen eines Aufzählungswerts führt zu Typbeziehung nicht gefunden

Das Umbenennen eines Werts einer Aufzählung wird erst ab Postgres 10 unterstützt.

Wie im Handbuch dokumentiert Sie müssen rename VALUE verwenden , nicht rename attribute um den Wert einer Aufzählung umzubenennen.

Aufzählungswerte sind ebenfalls Zeichenfolgenkonstanten, keine Bezeichner. Daher müssen Sie sie in einfache Anführungszeichen setzen, nicht in doppelte Anführungszeichen:

ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-WEEKLY' TO 'BI_WEEKLY';

Wenn Sie sich wundern, warum Sie einen "Typ ... existiert nicht"-Fehler mit der falschen Syntax erhalten:

Wenn Sie die Option RENAME ATTRIBUTE verwenden dies zeigt an, dass ein „regulärer“ Objekttyp geändert werden sollte, sodass Postgres nach einem „echten“ Objekttyp sucht.

Aber ein "enum type" ist kein "object type" und deshalb beschwert sich Postgres über "type xyz does not exist", anstatt über einen Syntaxfehler.