PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

грешка:ALTER TYPE ... ADD не може да се изпълнява в транзакционен блок

Както беше споменато по-горе, не можете да редактирате enum в рамките на транзакционния блок. Но можете да създадете новия. Ето стъпките:

  1. Промяна на типа от request_type към varchar за всички колони/таблици, които използват този тип:
ALTER TABLE table_name
    ALTER COLUMN column_name TYPE VARCHAR(255);
  1. Премахнете и създайте отново request_type enum:
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. Връщане на типа от varchar към request_type за всички колони/таблици (връщане на първа стъпка):
ALTER TABLE table_name
    ALTER COLUMN column_name TYPE request_type
    USING (column_name::request_type);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. партиден файл за съхраняване на изхода от psql заявката в променлива

  2. Групирайте по и добавете колони

  3. Как да разположите PostgreSQL на DigitalOcean

  4. SQL заявка за съвпадение на един от множество низове

  5. bundle exec rake assets:precompile - конфигурацията на базата данни не указва адаптер