无法向现有表添加列

3

我有一个包含以下三列的费用表格

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

为了添加一个新的列(OldCode char(4) not null),我在Microsoft SQL Server Management Studio中使用了表设计特性。但是我收到以下错误信息:

'Expenses' table
- 无法修改表格。无法将NULL值插入到列'OldCode'中,表格'TransportSystemMaster.dbo.Tmp_Expenses'不允许为空。插入失败。该语句已终止。

顺便说一下,我已经成功地将具有相同规格的同一数据库的其他表格添加了相同的列。
需要帮助吗?
4个回答

9

您的表格包含现有记录

并且您正在添加一个新的类型为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

3

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

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

3

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接