sql >> Database teknologi >  >> RDS >> PostgreSQL

Omdøbning af en enum-værdi resulterer i Typerelation ikke fundet

Omdøbning af en værdi af en enum understøttes kun fra Postgres 10.

Som dokumenteret i manualen du skal bruge rename VALUE , ikke rename attribute for at omdøbe værdien af ​​en enum.

Enums-værdier er også strengkonstanter, ikke identifikatorer. Derfor skal du sætte dem i enkelte anførselstegn, ikke dobbelte anførselstegn:

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

Hvis du undrer dig over, hvorfor du får en "type ... findes ikke"-fejl med den forkerte syntaks:

Når du bruger muligheden RENAME ATTRIBUTE dette indikerer, at en "almindelig" objekttype skal ændres, så Postgres leder efter en "rigtig" objekttype.

Men en "enum type" er ikke en "objekttype", og derfor klager Postgres over "type xyz eksisterer ikke", snarere end en syntaksfejl.




  1. Nedtællingstimer-php+mysql+js

  2. Hent kun kolonnenavne som i array mysql

  3. Fjern pivot-tabel i MySQL

  4. Databasedesign og modellering af specifikke relationer