首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在现有表中插入非空列

问在现有表中插入非空列
EN

Stack Overflow用户
提问于 2010-08-16 20:10:09
回答 8查看 257.2K关注 0票数 150

我试过了:

代码语言:javascript
复制
ALTER TABLE MY_TABLE 
ADD STAGE INT NOT NULL;

但是它给出了这个错误消息:

ALTER TABLE仅允许添加可以包含空值或具有指定

的缺省定义的列

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-08-16 20:14:29

您可以选择最初创建Null-able列,然后使用有效的not null值更新表列,最后ALTER column以设置NOT NULL约束:

代码语言:javascript
复制
ALTER TABLE MY_TABLE ADD STAGE INT NULL
GO
UPDATE MY_TABLE SET <a valid not null values for your column>
GO
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL
GO

另一种选择是为您的列指定正确的默认值:

代码语言:javascript
复制
ALTER TABLE MY_TABLE ADD STAGE INT NOT NULL DEFAULT '0'

更新:请注意,上面的答案包含GO,当您在Microsoft SQL server上运行这段代码时,这是必须的。如果您想在Oracle或MySQL上执行相同的操作,则需要使用分号;,如下所示:

代码语言:javascript
复制
ALTER TABLE MY_TABLE ADD STAGE INT NULL;
UPDATE MY_TABLE SET <a valid not null values for your column>;
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL;
票数 267
EN

Stack Overflow用户

发布于 2010-08-16 20:15:45

如果您不允许该列为Null,则需要提供一个默认值来填充现有行。例如:

代码语言:javascript
复制
ALTER TABLE dbo.YourTbl ADD
    newcol int NOT NULL CONSTRAINT DF_YourTbl_newcol DEFAULT 0

在企业版上,这是自2012年以来的metadata only change

票数 15
EN

Stack Overflow用户

发布于 2010-08-16 20:14:41

该错误消息非常具有描述性,请尝试:

代码语言:javascript
复制
ALTER TABLE MyTable ADD Stage INT NOT NULL DEFAULT '-';
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3492947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档