Как добавить столбец с параметрами по умолчанию с помощью ENUM

#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 .