2016-04-18 50 views
-3

[dbo].[payment_info]上的列名必须从NULL更改为NOT NULL。如果表中包含数据,则脚本可能不起作用。 为避免此问题,您必须为此列中的所有行添加值或将其标记为允许NULL值,或者将智能默认值的生成启用为部署选项。不能将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 
); 

我不能改变NULLNOT NULL;当我更新它显示上述警告。

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

+1

该表是否已经存在? –

+0

是的...在这个给定的空值,但我需要改变一切都不为空......更改为非空后我不能更新数据库(即保存数据库) – user2123496

+0

“为避免此问题,您必须将值添加到此列对于所有行或者将其标记为允许NULL值,或者将智能默认值生成为部署选项。“消息本身给你的答案.... – Stephen

回答

0

我不确定我是否正确理解了您的问题,但是警告说明了这一切 - 如果列中已有空值,您不能将列切换为不可空。

必须更新,并设置一些值空项或设定的默认值

编辑

你应该首先尝试:

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

,并检查是否有任何问题

+0

但我需要将值保存到数据库,当我点击按钮...其中只有card_type被保存到表 – user2123496

+0

显示我需要创建一个新表呢? – user2123496

1

如果表已经存在并且满足数据,则必须更新所需列中的所有NULL值改变一些不是NULL的值。然后,ALTER命令应该在没有警告和/或错误的情况下工作。

+0

如何做到这一点?..你可以只显示? – user2123496

+0

protected void Button1_Click(object sender,EventArgs e) string constr = ConfigurationManager.ConnectionStrings [“dataconnectionstring”]。ConnectionString; SqlConnection cn = new SqlConnection(constr); SqlCommand cmda = new SqlCommand(“insert into payment_info(name,card_no,tel_no,mob_no,address)values(''+ name +'',''+ cno +'','”+ tno +“',' “+ mbno +”','“+ address +”')“,cn);如果(ddlcardtype.SelectedValue ==“1”) – user2123496

+0

SqlCommand cmd = new SqlCommand(“insert into payment_info(card_type)values(''+ ddlcardtype.SelectedItem +'')”,cn); cn.Open(); cmd.ExecuteNonQuery(); cn。关(); } – user2123496

相关问题