繁体   English   中英

无法将列添加到现有表

[英]Can not add a column to existing table

我有桌子。 三列的支出如下

ExpenseId int NOT NULL,
ExpenseName varchar(50) NOT NULL,
Invalid bit NOT NULL

要添加新列( OldCode char(4) not null ),我对Microsoft SQL Server Management Studio中的表使用了设计功能。 但我得到以下错误

“费用”表
-无法修改表格。 无法将值NULL插入表'TransportSystemMaster.dbo.Tmp_Expenses'的'OldCode'列中; 列不允许为空。 INSERT失败。 该语句已终止。

顺便说一句,我已经能够将具有相同规格的同一列添加到同一数据库的其他表中。

有什么帮助吗?

您的表由现有记录组成

并且您正在推送类型为NOT NULL的新列。

因此对于较早的记录,数据必须是某些东西。

尝试这样的事情

ALTER TABLE MY_TABLE ADD Column_name INT NULL
GO
UPDATE MY_TABLE <set valid not null values for your column>
GO
ALTER TABLE MY_TABLE ALTER COLUMN Column_name INT NOT NULL
 GO

由于OldCodeNOT NULL ,因此您应该为其指定一个默认值。

当表上有一些行时,您不能添加不可为空的列,您应该为其提供默认值

Alter Table table_name add OldCode int not null DEFAULT(0);

您必须为表的所有4个字段指定值,这纯粹是因为在设计表时,您将列的定义设置为不为null。 再次,您将添加一个名为OldCode的新列,并将其设置为非null,所有就绪的现有记录都没有值。 所以这就是它抱怨的原因

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM