#sql #oracle #alter-table #check-constraints
#sql #Oracle #alter-таблица #проверка-ограничения
Вопрос:
Я хочу добавить один столбец в таблицы, который называется category, но я пробую несколько вариантов и не работает
alter table attachments
add
(
category varchar2(20) not null check (category in ('default','agreement','security','information') DEFAULT 'default')
);
Я также попробую что-то вроде этого
ALTER TABLE attachments
ADD category ENUM ('default','agreement','security','information') DEFAULT 'default'
Я проверяю пару сообщений здесь, но не могу найти никакого решения. Где я допустил ошибку? что здесь не так?
Я получаю сообщение
Error report -
ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
Комментарии:
1.
ENUM
является синтаксисом MySQL и недопустим в Oracle.2. Да, я просто вижу документацию. Спасибо
Ответ №1:
Вы можете сформулировать это как:
alter table attachments
add category varchar2(20)
default 'default'
check (category in ('default','agreement','security','information'))
not null
;
Комментарии:
1. @xerror Вы также должны назвать ограничения (таким образом, вы можете определить, что не удалось, а не пытаться расшифровать имя ограничения, сгенерированное системой). Что-то вроде
... DEFAULT 'default' CONSTRAINT attachments__category__chk CHECK ( ... ) CONSTRAINT attachments__category__nn NOT NULL
.