2013-05-31 6 views
0

Когда я пытаюсь добавить этот столбец:
Добавить столбец не пустой, не по умолчанию

alter table APL ADD CODE NUMERIC(2) NOT NULL

я получаю эту ошибку:

ALTER TABLE 'APL 'failed. Default clause is required in order to add non-NULL column 'CODE'.

Я знаю, что я могу добавить по умолчанию, и он будет работать, но я НЕ ХОЧУ ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ в этой coloumn, я читал, и я слышал, что есть способ, которым я могу добавить столбец со значением по умолчанию.
Кто-нибудь знает как?


Edit:
Ill объяснить больше о моем случае.
Этот столбец был создан по ошибке как NULL (я не знаю почему) и его часть первичного ключа (к счастью, у меня нет дубликата), поэтому я должен изменить его на NOT NULL, поэтому я могу назначить его.
Его действительно старый столбец, и я не знаю, какой тип по умолчанию я должен добавить, потому что, если я добавлю неправильное значение, приложения могут вызвать проблемы.

ответ

3

Я нашел этот запрос, который мне подходит, для меня это кажется прекрасным. Кто-нибудь пробовал это раньше?
Я добавляю столбец как NULL, а затем меняю его на null.


alter table TEST_EMPLOYEE ADD COMP_CODE NUMERIC(4) NULL
alter table TEST_EMPLOYEE MODIFY COMP_CODE NUMERIC(4) NOT NULL

+0

но этот метод делает NULL значение существует в столбце, NOT NULL – DevZer0

+0

@ devzer0 что вы имеете в виду? Если я попытаюсь вставить значение NULL в этот столбец, я получу ошибку, чтобы этот столбец не допускал нулевые значения. – Moudiz

+1

@moudiz вы должны рассмотреть существующие строки, которые имеют нулевые значения в столбце COMP_CODE? Если бы это было разрешено, то они нарушили бы это условие. – AdamH

2

Если вы считаете, что ваше требование невозможно.

Вы хотите указать «NOT NULL», который сообщает базе данных, что каждая строка должна иметь значение для этого столбца, которое база данных вполне удовлетворяет, предоставляя вам значение по умолчанию для столбцов в существующих строках.

Но вы не хотите указывать значение по умолчанию, так как должна использоваться база данных, которая должна содержать столбец «NOT NULL» в существующих строках?

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