Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无法将null更改为not null_Sql - Fatal编程技术网

Sql 无法将null更改为not null

Sql 无法将null更改为not null,sql,Sql,表[dbo].[payment\u info]上的列名必须从NULL更改为notnull。如果表中包含数据,则ALTER脚本可能无法工作。 要避免此问题,必须为此列中的所有行添加值,或将其标记为允许空值,或将生成智能默认值作为部署选项 CREATE TABLE [dbo].[payment_info] ( [name] VARCHAR (50) NOT NULL, [card_no] VARCHAR (50) NULL, [card_type] VAR

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

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
更改为
非NULL
;当我更新时,它会显示上述警告


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

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

您必须更新并将一些值设置为空条目或设置默认值

编辑

你应该先试试:

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

并检查是否存在任何问题

如果表已经存在,并且已使用数据完成,则必须更新要更改的列中非空值的所有空值。然后,ALTER命令应该在没有警告和/或错误的情况下工作。

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

ALTER表
桌子
变列
柱
int不为空;

该表是否已经存在?是的……在此表中,它是给定的null,但我需要将所有内容都更改为not null。更改为not null后,我无法更新数据库(即保存数据库)“要避免此问题,必须为此列中的所有行添加值,或将其标记为允许空值,或将生成智能默认值作为部署选项。”。“消息本身为您提供了答案……这是您的问题,当表已经存在时,您也无法创建它。。。这将创造一些已经存在的东西。你想改变它。如果你真的阅读了错误信息中的文字,它会非常清楚地解释问题是什么以及如何解决它。学会阅读这些单词——它们不只是为了在屏幕上显示一些东西。它们实际上包含信息,但您必须实际读取它们才能获得该信息。但我需要在单击按钮时将值保存到数据库中…在这其中,唯一的卡片类型是保存到tableprotected void Button1\u click(object sender,EventArgs e){string constr=ConfigurationManager.ConnectionStrings[“dataconnectionstring”].ConnectionString;SqlConnection cn=new-SqlConnection(CONTR);SqlCommand cmda=new-SqlCommand(“插入付款信息(姓名、卡号、电话号、手机号、地址)值(“+name+”、“+cno+”、“+tno+”、“+mbno+”、“+address+”)、cn);如果(ddlcardtype.SelectedValue=“1”){SqlCommand cmd=new SqlCommand(“插入付款信息(卡片类型)值(“+ddlcardtype.SelectedItem+”)”,cn);cn.Open();cmd.ExecuteNonQuery();cn.Close();}否则(ddlcardtype.SelectedValue==“2”){SqlCommand cmd=new SqlCommand(“插入付款信息(卡片类型)值(“+ddlcardtype.SelectedItem+”)”,cn);cn.Open();cmd.ExecuteNonQuery();cn.Close();}@user2123496您可以更新您的问题,使阅读更容易。但主要问题是查询
插入付款信息(卡片类型)…
不可能。@user2123496您可以使用UPDATE语句并将WHERE子句设置为NULL。表中的所有列都是VARCHAR,因此请将NULL更新为一个空格字符或空字符串。我不知道您是否有任何其他结构,如表之间的关系(某些结构可能无法正常工作),但对于你的任务来说,这就足够了