可不可以给一个表加一列NOTNULL而且没有默认值

tanshihou 2013-11-20 12:56:50
可不可以给一个表加一列NOTNULL而且没有默认值
这样写出错
ALTER TABLE [dbo].[aaa] ADD bbb SMALLINT NOT NULL

谢谢了
...全文
125 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-11-20
  • 打赏
  • 举报
回复
没问题啊,报什么错?
guguda2008 2013-11-20
  • 打赏
  • 举报
回复
你要分步加 第一步加一列没有任何约束的列 第二步给这列赋值 第三步给这列加非空约束
LongRui888 2013-11-20
  • 打赏
  • 举报
回复
引用 3 楼 tanshihou 的回复:
我这边提示,只能加允许NULL或者有默认值的列, 是不是我这个表里已经有数据了呀, 如果没有数据也许可以改
哦,那你的问题就是,你的bbb列已经存在了,这样确实没办法修改为not null,因为这个列中存在null值。 这个也简单,关键是你如何处理这种NULL值,我觉得可以先把这些null 替换为空串,也就是'' 然后再用这个语句,设置为not null: ALTER TABLE [dbo].[aaa] alter column bbb SMALLINT NOT NULL
Leon_He2014 2013-11-20
  • 打赏
  • 举报
回复
表里有数据的情况下 bbb是新加的,肯定没有值,然后没有默认值,所以只能为null了,但是你有不允许为null。这个让数据库情何以堪呢? 建议先添加列,允许null。然后update把对应列值填上后,再修改为不允许为null。 或者按楼上的方法,弄到一张新表里,然后把表名改回来。
發糞塗牆 2013-11-20
  • 打赏
  • 举报
回复
有数据是不行的,要么你新建个表,把那个null的列也写上,然后把数据导过去,删除源表再重命名新表
LongRui888 2013-11-20
  • 打赏
  • 举报
回复
具体是报什么错误呢。 如果这一列已经存在,可以用这个代码:
ALTER TABLE [dbo].[aaa] 
alter column  bbb SMALLINT NOT NULL
tanshihou 2013-11-20
  • 打赏
  • 举报
回复
我这边提示,只能加允许NULL或者有默认值的列, 是不是我这个表里已经有数据了呀, 如果没有数据也许可以改
LongRui888 2013-11-20
  • 打赏
  • 举报
回复
下面的代码没有报错:
if OBJECT_ID('aaa') is not null
   drop table aaa
go

create table aaa(v1 int,v2 int)

--没有报错
ALTER TABLE [dbo].[aaa] ADD bbb SMALLINT NOT NULL

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧