将列更改为不允许为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,所以我真的不确定是什么导致了问题。有什么想法吗?我被难住了。

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

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

Select * from ... where column is null

而不是

Select * from ... where column = null

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

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

alter table[dbo]。[mydatabase]alter列WeekInt int不为null DEFAULT"-1";

相关内容

  • 没有找到相关文章

最新更新