将列更改为不允许空值

时间:2013-08-05 22:13:11

标签: sql-server null alter-column

所以我想将我的SQL Server数据库中的列更改为不允许空值,但我一直收到错误。这是我正在使用的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是正确的,并且我正在尝试更改的列中当前没有空值,所以我真的不确定导致问题的原因。有任何想法吗?我很难过。

3 个答案:

答案 0 :(得分:11)

显然,该表中包含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语句。

答案 1 :(得分:0)

如果您尝试将列更改为非null,并且收到此错误消息,但该列似乎没有null,请确保您正在检查is null而不是= null(会得出不同的结果。

Select * from ... where column is null

代替

Select * from ... where column = null

我添加这个是因为它使我绊倒并花了一段时间解决。

答案 2 :(得分:0)

这会起作用。您应该发送一个默认值,然后它将在此示例中将所有以前的记录更改为 -1。

alter table [dbo].[mydatabase]alter column WeekInt int not null DEFAULT '-1';