展开全部
改变已有表的列字段,使用alter命令;
格式:
alter table 表名 add 新增字段名 字段类型 [列级约束]
例如:alter table student add grade int not null (not null 属于列级约束)
但可能出现以下的情况:
ALTER TABLE 只允许添加满足下述条件的列: 列可以包含空值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允许添加此列。
原因:表中原本有数据(存在很多行),在你新增加非空字段后,原来存在的行中的数据本来为空,但你又要求它非空,这样就矛盾了,所以该命名就不会执行,就会报错。
解决方法:
1、alter table student add grade int 不加非空约束;
2、update table student set grade=60 where grade is NULL 将存在的数据行中的grade字段同一设置成60分;
3、alter table student alter column grade int not null 增加非空约束;
格式:
alter table 表名 add 新增字段名 字段类型 [列级约束]
例如:alter table student add grade int not null (not null 属于列级约束)
但可能出现以下的情况:
ALTER TABLE 只允许添加满足下述条件的列: 列可以包含空值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允许添加此列。
原因:表中原本有数据(存在很多行),在你新增加非空字段后,原来存在的行中的数据本来为空,但你又要求它非空,这样就矛盾了,所以该命名就不会执行,就会报错。
解决方法:
1、alter table student add grade int 不加非空约束;
2、update table student set grade=60 where grade is NULL 将存在的数据行中的grade字段同一设置成60分;
3、alter table student alter column grade int not null 增加非空约束;
展开全部
ALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。因为列 stuSum 不能包含空值且未指定 DEFAULT 定义,所以无法将该列添加到表 stuInfo中。
修改成:alter table stuInfo add column stuSum int not null default 0 应该就可以了。
如果你不想这样做,也可以分两步实现:
alter table stuInfo
add stuSum int null
alter table stuInfo
alter column stuSum int not null
如有问题,再讨论一下~
修改成:alter table stuInfo add column stuSum int not null default 0 应该就可以了。
如果你不想这样做,也可以分两步实现:
alter table stuInfo
add stuSum int null
alter table stuInfo
alter column stuSum int not null
如有问题,再讨论一下~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
语法没错
因为表里面已经有数据了,当然不能添加非空列了,除非指定默认值
因为表里面已经有数据了,当然不能添加非空列了,除非指定默认值
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询