怎样用sql新建一个不为空的字段

我写了这样一个sql语句:
ALTER TABLE aaww ADD field77 int NOT NULL
但是sql不让添加,到底应该怎样写呢?
我还想问一个问题:
怎样才能sql建一个有默认值的字段呢?
问题补充:
1.如果付了默认值的sql语句,执行的时候是正确的ALTER TABLE aaww ADD field77 int NOT NULL
default 1 with values ,
如果不付默认值,只执行ALTER TABLE aaww ADD field77 int NOT NULL 就会报错。

2.报错说明:ALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。因为列 'field77' 不能包含空值且未指定 DEFAULT 定义,所以无法将该列添加到表 'aaww' 中。
3.数据库是SqlServer2000
4.如果能用sql的企业管理器或查询分析器来建表,我也用不着写sql语句了。
4.大家的方法我都试验过了,不行啊。
5.我想添加是不为空的字段,表已经有了。

创建表的时候:
create table table_name
(
id serial, // ---自增,item---
username char(20) not null, //---非空---
nation char(20) default 'China' //---默认值---
)

修改表的时候:

添加:
alter table table_name add(column_name char(120) default '默认值')

修改:
alter table table_name modify(old_name char(120) default '默认值')

我用的是informix数据库,不过整体上是相同的。你可以尝试一下,或者告诉我你用的是什麽数据库,我再帮你解决。

----------------------正义的分割线----------------------

发现你的问题了,你在修改表结构的时候,要求这个栏位不为空,可是你并没有给表的这个栏位赋值,这个效果就貌似"又要马儿跑,又不给草吃"。其实你只要一开始就给这个栏位赋一个默认值就可以了,如果这个栏位的值为空了,数据库就会给这个栏位赋值为默认值,不会出现真正的为空情况。

你尝试下下面的语句:
alter table [table名] add/modify columnname datatype default(defaultvalue)
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-08-31
建表的话,不用这么麻烦吧,还用sql来建表;

推荐你是用Erwin,图形化数据库设计工具,可以自动生成表,修改也方便,设置索引,默认值都很很简单的,完全是图形化的,不用写一行代码;

当然,会写SQL,也是必要的,虽然工作中很少用到这些建表语句;
第2个回答  2007-08-31
是什么SQL?

如果是MYSQL的话,不能用INT,要用NUMBER

还有报错报的什么。自己看下报错就知道了

虽然不精通SQL,不过你的命令也写得太……不规范了。
第3个回答  2007-09-01
1.ALTER TABLE aaww ADD field77 int NULL(只去掉了null,SQL Server不能添加非空的字段,因为添进去了,如果这个表已有数据,这个字段又没赋值,则约束不完整)
2.alter table aaww
add constraint DF_field77 default(77) for field77(77为默认值)
第4个回答  2007-08-31
ALTER TABLE aaww ADD field77 int NOT NULL
在SQL2000中应该可以添加啊
数据库是否对了`
建一个有默认值的字段:
atler constraint 约束名 default('值') for 字段
相似回答