Подтвердить что ты не робот

Изменить столбец, чтобы не допускать значения 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 прав, и в столбце, который я пытаюсь изменить, нет нулей, поэтому я действительно не уверен, что вызывает проблему. Есть идеи? Я в тупике.

4b9b3361

Ответ 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

Я добавляю это, потому что это сбило меня с толку и заняло некоторое время, чтобы решить.