将列更改为不允许为空

问题描述:

因此,我想更改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是正确的,目前没有空的列我试图改变,所以我真的不知道是什么导致了问题。有任何想法吗?我很难过。

+0

有错误似乎表明您正在运行'INSERT'或'UPDATE'语句,而不是'ALTER TABLE'语句。 –

+3

你是否110%确定该列中没有任何'nulls',错误就表明存在。 –

+0

@a_horse_with_no_name不,这绝对是一个改变脚本 – user2255811

很明显,表中有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声明。

+0

它可以在单个查询中完成 – Imad