web-dev-qa-db-ja.com

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は正しいと確信しており、変更しようとしている列には現在nullがないため、問題の原因がよくわかりません。何か案は?私は困惑しています。

12
user2255811

明らかに、テーブルにはNULL値が含まれています。あなたがチェックできるもの:

select *
from mydatabase
where WeekInt is NULL;

次に、2つのことのいずれかを実行できます。値を変更します。

update mydatabase
    set WeekInt = -1
    where WeekInt is null;

または、問題のある行を削除します。

delete from mydatabase
    where WeekInt is null;

次に、すべての値に問題がなければ、alter tableステートメントを実行できます。

12
Gordon Linoff

列をnull以外に変更しようとして、このエラーメッセージが表示されても、列にnullがないように見える場合は、is nullではなく= nullをチェックしていることを確認してください(結果)。

Select * from ... where column is null

の代わりに

Select * from ... where column = null

それが私をつまずかせて解決するのに時間がかかったので、私はこれを追加しています。

1
Greg Gum