【发布时间】:2009-06-30 17:11:09
【问题描述】:
我了解在 SQL Server 中向包含数据的表添加列时,该列必须具有 NULL 选项或默认值。否则 SQL Server 会用什么填充新行?
我不知道为什么我不能将 NOT NULL 列添加到空表中。我已经在 SQL 2008 的两个实例和 SQL 2005 的一个实例上进行了尝试,没有任何问题。但是,使用 SQL 2000 的客户确实存在此问题。这与 SQL 2000 有关还是您可以关闭的选项。希望这是一种选择。
Select @@Version
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) 2002 年 12 月 17 日 14:22:05 版权所有 (c) 1988-2003 Windows 上的 Microsoft Corporation Developer Edition NT 5.1(内部版本 2600:Service Pack 3)
Select count(*) from actinv
0
ALTER TABLE [ActInv] ADD [BATCHNUMBER] NVARCHAR(50) NOT NULL
消息 4901,第 16 级,状态 1,第 1 行 ALTER TABLE 只允许添加可以包含空值或具有 指定了默认定义。无法将列“BATCHNUMBER”添加到表中 'ActInv' 因为它不允许空值并且没有指定 DEFAULT 定义。
【问题讨论】:
-
我知道这听起来很愚蠢,但桌子真的是空的吗?
-
好吧,我从 ActInv 中选择 count(*),它返回零!
-
Slect count(*) 仅返回至少一列不为空的记录。我知道,听起来很傻,但请尝试使用 select * from table 代替。
-
我从来不知道!虽然 Select * 返回零行,但我刚刚检查过。
-
尼尔 N,你错了。 create table b(a int) insert b values(null) select count(*) from b -- 1
标签: sql-server sql-server-2000 null ddl