Почему Oracle считает, что мне не хватает правильных скобок?
В Oracle 10i я выполняю следующую команду:
ALTER TABLE jnrvwchnglst ADD
( jnrvwchnglst_userid NUMBER(10) NOT NULL DEFAULT 1 )
да jnrvwchnglst
это существующая таблица и нет jnrvwchnglst_userid
это не существующий столбец.
Сообщение об ошибке Oracle:
ORA-00907: missing right parenthesis
Что не так с этим запросом и почему Oracle считает, что мне не хватает скобок?
3 ответа
ALTER TABLE jnrvwchnglst ADD
( jnrvwchnglst_userid NUMBER(10) DEFAULT 1 NOT NULL )
"(NOT) NULL" должен быть последним оператором в синтаксисе "ALTER", когда он присутствует, поэтому, когда Oracle увидел это - и что следующий символ (ваше "DEFAULT" stmt) не был ожидаемым завершающим правом ")", бросил Ошибка.
У меня была эта проблема раньше, когда вы не можете добавить столбец И установить значения по умолчанию / ограничения в том же заявлении. "Отсутствующая правая скобка" - это красная сельдь. Oracle любит использовать эту ошибку для случаев, не связанных с круглыми скобками (я предполагаю, что их логика синтаксического анализа проваливается до 00907).
Пытаться
ALTER TABLE jnrvwchnglst ADD ( nrvwchnglst_userid NUMBER(10) );
ALTER TABLE jnrvwchnglst ALTER ( nrvwchnglst_userid SET DEFAULT 1 );
UPDATE jnrvwchnglst SET nrvwchnglst_userid = 1 WHERE nrvwchnglst_userid IS NULL;
ALTER TABLE jnrvwchnglst ALTER ( nrvwchnglst_userid SET NOT NULL );