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

Fehler:ALTER TYPE ... ADD kann nicht innerhalb eines Transaktionsblocks ausgeführt werden

Wie oben erwähnt, können Sie Enum nicht innerhalb des Transaktionsblocks bearbeiten. Aber Sie können die neue erstellen. Hier sind die Schritte:

  1. Ändern Sie den Typ von request_type zu varchar für alle Spalten/Tabellen, die diesen Typ verwenden:
ALTER TABLE table_name
    ALTER COLUMN column_name TYPE VARCHAR(255);
  1. Löschen und neu erstellen request_type Aufzählung:
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. Typ von varchar zurücksetzen zu request_type für alle Spalten/Tabellen (zurück zu Schritt eins):
ALTER TABLE table_name
    ALTER COLUMN column_name TYPE request_type
    USING (column_name::request_type);