首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alter Table ' default‘不设置默认值- SQL Server

问Alter Table ' default‘不设置默认值- SQL Server
EN

Stack Overflow用户
提问于 2016-09-28 04:51:28
回答 2查看 3.1K关注 0票数 3

我正在尝试修改现有的列并添加一个整型列。添加整型列时,我将DEFAULT设置为10,但添加列时未设置default

代码语言:javascript
复制
ALTER TABLE dbo.Contacts ADD Col1 INT DEFAULT 10

我需要做明确的更新脚本,以设置所有过去的记录作为默认值

而如果该列为'not null‘,则所有记录的缺省值均为10。

代码语言:javascript
复制
ALTER TABLE dbo.Contacts ADD Col2 INT NOT NULL DEFAULT 10

为什么可以为空的列没有设置为默认值?在我的实际表中,我有将近850mil的记录,我的新列是可以为空的列,并且我正在努力避免在我的ALTER table脚本之后再次更新。方法是什么?

我正在考虑创建不能为空的列,默认值为10,并再次将约束更改为NULL。这是一个很好的方法吗?还有别的办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-28 04:58:38

您必须使用WITH VALUES来获取值,而不是null。在2016年使用WideWorldImporters:

代码语言:javascript
复制
ALTER TABLE sales.orders 
ADD c1 INT DEFAULT 10 WITH VALUES
GO 
票数 6
EN

Stack Overflow用户

发布于 2016-09-28 05:18:10

定义默认列值后,默认列值将应用于插入到表中的新行。要测试这一点,请尝试使用如下的INSERT命令。

代码语言:javascript
复制
INSERT INTO TableName col1 VALUES (col1_value)

在此插入之后,对于插入的行,col2值应该获得默认值10。

但是,不会自动为表中的现有行分配新的缺省列值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39734102

复制
相关文章

相似问题

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