enum'ов добавление нового значения в блоке транзакции?
Т.е. вот такое валится в ошибку:
CREATE TYPE test_enum AS ENUM ('foo', 'bar');
BEGIN;
ALTER TYPE test_enum ADD VALUE 'baz';
ERROR: ALTER TYPE ... ADD cannot run inside a transaction block
Если ничего не путаю, то для ADD VALUE нельзя сделать ROLLBACK: This routine is to be called by statements that must not run inside a transaction block, typically because they have non-rollback-able side effects or do internal commits.
Потому что возможна ситуация, когда некие операции в этой же транзакции приведут к изменениям индексов, построенных с использованием enum, в который добавляется новое значение. Откатить такие изменения без пересоздания индексов будет невозможно.
Обсуждают сегодня