sql >> Databasteknik >  >> RDS >> PostgreSQL

Att byta namn på ett uppräkningsvärde resulterar i Typrelation hittades inte

Att byta namn på ett värde på en enum stöds endast från och med Postgres 10.

Som dokumenterat i manualen du måste använda rename VALUE , inte rename attribute för att byta namn på värdet på en enum.

Enums-värden är också strängkonstanter, inte identifierare. Därför måste du omge dem med enkla citattecken, inte dubbla citattecken:

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

Om du undrar varför du får ett "typ ... finns inte"-fel med fel syntax:

När du använder alternativet RENAME ATTRIBUTE detta indikerar att en "vanlig" objekttyp bör ändras, så Postgres letar efter en "riktig" objekttyp.

Men en "enum-typ" är inte en "objekttyp" och därför klagar Postgres på "typ xyz existerar inte", snarare än ett syntaxfel.




  1. Vanlig användare med SYSBACKUP-behörighet

  2. Hur man SELECT baserat på värdet av en annan SELECT

  3. Överträdelse av integritetsbegränsning:1048 Kolumnen "user_id" kan inte vara null fel uppstår vid tilldelning av roller (Laravel 5.3)

  4. Bästa praxis för att lagra flerspråkiga strängar