sql >> Databasteknik >  >> RDS >> PostgreSQL

fel:ALTER TYPE ... ADD kan inte köras i ett transaktionsblock

Som det nämndes ovan kan du inte redigera enum inom transaktionsblocket. Men du kan skapa den nya. Här är stegen:

  1. Ändra typ från request_type till varchar för alla kolumner/tabeller som använder denna typ:
ALTER TABLE table_name
    ALTER COLUMN column_name TYPE VARCHAR(255);
  1. Släpp och skapa igen request_type uppräkning:
DROP TYPE IF EXISTS request_type;
CREATE TYPE request_type AS ENUM (
    'OLD_VALUE_1',
    'OLD_VALUE_2',
    'NEW_VALUE_1',
    'NEW_VALUE_2'
);
  1. Återställ typ från varchar till request_type för alla kolumner/tabeller (återställ steg ett):
ALTER TABLE table_name
    ALTER COLUMN column_name TYPE request_type
    USING (column_name::request_type);


  1. En datamodell för djurvård

  2. Dynamiskt kolumnnamn med förberedd sats + sql-fråga med variabel som innehåller 's

  3. currval Funktion i PostgreSQL som klagar på att kolumnen inte existerar

  4. Hur kombinerar man tre MySQL-frågor till en?