2011-12-31 5 views
1

Это определение перечислимого типа:PostgreSQL: изменение столбца типа перечислений

CREATE TYPE khstate AS ENUM ('none', 'form', 'test', 'finished'); 

Теперь в таблице базы данных У меня есть строка со столбцами «ид» (типа SERIAL) и «государство» (тип khstate). Значение столбца «id» равно 100004, а значение столбца «состояние» равно «none». Как изменить его, скажем, на «форму»? Определение таблицы выглядит следующим образом.

CREATE TABLE IF NOT EXISTS khs ( 
    id SERIAL UNIQUE, 
    state khstate DEFAULT 'none', 
    PRIMARY KEY (id) 
); 

я пытался запросы, такие как

UPDATE tablename SET state = 'form' WHERE id = 100004; 

ОШИБКА: неверное значение ввода для перечисления khstate: "форма"

UPDATE tablename SET state = 'form'::khstate WHERE id = 100004; 

ОШИБКА: неверное значение ввода для перечисления khstate: «форма "

но без успеха. Я использую последнюю версию BitNami LAPPstack, поэтому версия PostgreSQL - это 9.1.1.

Я не добавил никаких ограничений RULE или TRIGGER, и я не использовал транзакции явно.

Я попытался найти решение для Google, но все, что я мог найти, это вопросы о том, как изменить тип перечисления, а не значение столбца.

+0

«но безрезультатно». означает? –

+2

Обе формы работают здесь. Измените свой вопрос, чтобы включить оператор CREATE TABLE и фактическое сообщение об ошибке. (Скопируйте и вставьте, не перепечатывайте.) –

+0

Любопытство - после выполнения ваших операторов UPDATE вы совершили транзакции? –

ответ

2

Сообщение об ошибке указывает, что 'form' не является зарегистрированным для вашего перечисления типа khstate.

Я также заметил, что в вашем вопросе вы создаете таблицу с именем khs, но в примере UPDATE вместо этого используется tablename.

Возможно, возникло смешение таблиц, схем или баз данных. Диагностировать проблему, запустив этот запрос в той же сессии, что дает вам сообщение об ошибке:

SELECT enum_range(NULL::khstate) 

вы видите form в массиве значений? Я ожидаю, вы этого не сделаете.

Подробнее о enum support functions in the manual.

+0

Большое спасибо! Я очень смущен тем, что значение «формы» не было, в самом деле, перечислено среди массива ценностей. Я сделал опечатку. :-(Извините за беспокойство". – tuope

Смежные вопросы