Sql 无法将列添加到现有表中

Sql 无法将列添加到现有表中,sql,sql-server,Sql,Sql Server,我有一张桌子。三栏费用如下 ExpenseId int NOT NULL, ExpenseName varchar(50) NOT NULL, Invalid bit NOT NULL 为了添加一个新列(oldcodechar(4)notnull),我在MicrosoftSQLServerManagementStudio中使用了表的设计功能。但我得到以下错误 “费用”表 -无法修改表。无法在“TransportSystemMaster.dbo.Tmp_Expenses”表的“OldCode”列

我有一张桌子。三栏费用如下

ExpenseId int NOT NULL,
ExpenseName varchar(50) NOT NULL,
Invalid bit NOT NULL
为了添加一个新列(
oldcodechar(4)notnull
),我在MicrosoftSQLServerManagementStudio中使用了表的设计功能。但我得到以下错误

“费用”表
-无法修改表。无法在“TransportSystemMaster.dbo.Tmp_Expenses”表的“OldCode”列中插入NULL值;列不允许空值。插入失败。声明已终止

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


有什么帮助吗?

您的表由现有记录组成

您正在推送一个类型为
notnull
的新列

因此,对于较旧的记录,数据必须是某种东西

试试这样的

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
ALTER TABLE MY\u TABLE ADD Column\u name INT NULL
去
更新我的表格
去
ALTER TABLE MY_TABLE ALTER COLUMN_name INT NOT NULL
去

因为
OldCode
非空的
,所以您应该为它指定一个默认值。

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

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

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