无法将null更改为not null

时间:2016-04-18 09:32:19

标签: sql

[dbo].[payment_info]上的列名必须从 NULL 更改为 NOT NULL 。如果表包含数据,则 ALTER 脚本可能无效。 要避免此问题,必须为所有行添加此列的值,或将其标记为允许NULL值,或者将智能默认值生成为部署选项。

CREATE TABLE [dbo].[payment_info]
 (
    [name]      VARCHAR (50)  NOT NULL,
    [card_no]   VARCHAR (50)  NULL,
    [card_type] VARCHAR (50)  NOT NULL,
    [tel_no]    VARCHAR (50)  NULL,
    [mob_no]    VARCHAR (50)  NULL,
    [address]   VARCHAR (MAX) NULL
);

我无法将NULL更改为NOT NULL;当我更新它时显示上述警告。

我正在使用visual studio 2013 asp.net和c#。

3 个答案:

答案 0 :(得分:2)

如果表已经存在并且已满足数据,则必须更新要在非某些值上更改的列中的所有NULL。然后ALTER命令应该没有警告和/或错误。

答案 1 :(得分:0)

我不确定我是否正确理解了您的问题,但是警告说明了一切 - 如果列中已经存在空值,则无法将列切换为不可为空。

您必须更新并设置一些值以清空条目或设置DEFAULT值

修改

你应该先试试:

select * 
from [dbo].[payment_info] 
where name is null

并检查是否有任何问题

答案 2 :(得分:0)

在服务器资源管理器中的表上单击鼠标右键,然后单击“新查询”。类型:

ALTER TABLE
  table
ALTER COLUMN
  column
    int NOT NULL;