日期:2014-05-18  浏览次数:20589 次

增加列,为什么必须允许NULL值
我有一张表,已经编辑了数据。然后,想增加一列,数据类型为int型,选择不允许NULL值,结果提示不能修改表。
当允许NULL值时,就可以修改了,请问,这是什么原因?为什么必须选择允许NULL值。

------解决方案--------------------
SQL code
select top 10 Name into #1 from sysobjects 


alter table #1 add NewCol int not null default 1


select * from #1

/*
sysrscols    1
sysrowsets    1
sysallocunits    1
sysfiles1    1
syspriorities    1
sysfgfrag    1
sysphfg    1
sysprufiles    1
sysftinds    1
sysowners    1
*/

------解决方案--------------------
需要指定默认值
------解决方案--------------------

可以向现有表添加列,前提是相应列允许使用 Null 值或者对该列创建了 DEFAULT 约束。向一个表添加新列时,数据库引擎会在该列中为表中的每个现有数据行插入一个值。因此,在向表中添加列时向列添加 DEFAULT 定义会很有用。如果新列没有 DEFAULT 定义,则必须指定该列允许 Null 值。数据库引擎将 Null 值插入该列,如果新列不允许 Null 值,则返回错误。

------解决方案--------------------
新增列完全可以不允许为null 的

如果是修改列,这个列里面已经有null 值才有你说的那种提示的。
------解决方案--------------------
alter table 你的表 add column 新增列 int null;

------解决方案--------------------
日,多写个column
------解决方案--------------------
SQL code

--新列没有 default 定义,则必须指定该列允许 Null 值

alter table tb add NewCol int not null default NULL

--不允许NULL,则必须指定默认值