Изменить столбец, чтобы не допускать значения null
Итак, я хочу изменить столбец в моей базе данных SQL Server, чтобы не допускать null, но я продолжаю получать ошибку. это оператор sql, который я использую:
alter table [dbo].[mydatabase] alter column WeekInt int not null
и это ошибка, которую я получаю:
Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'WeekInt', table 'CustomerRadar.dbo.tblRWCampaignMessages'; column does not allow nulls. UPDATE fails.
The statement has been terminated.
Я уверен, что мой sql прав, и в столбце, который я пытаюсь изменить, нет нулей, поэтому я действительно не уверен, что вызывает проблему. Есть идеи? Я в тупике.
Ответы
Ответ 1
Очевидно, что в таблице есть значения NULL
. Что вы можете проверить:
select *
from mydatabase
where WeekInt is NULL;
Затем вы можете сделать одну из двух вещей. Либо измените значения:
update mydatabase
set WeekInt = -1
where WeekInt is null;
Или удалите оскорбительные строки:
delete from mydatabase
where WeekInt is null;
Затем, когда все значения в порядке, вы можете сделать оператор alter table
.
Ответ 2
Если вы пытаетесь изменить столбец, чтобы он не был нулевым, и вы получаете это сообщение об ошибке, но кажется, что столбец не имеет is null
значений, убедитесь, что вы проверяете, is null
и not = null
(что дает другие результаты).
Select * from ... where column is null
вместо
Select * from ... where column = null
Я добавляю это, потому что это сбило меня с толку и заняло некоторое время, чтобы решить.