如何为现有的列设置默认值

464

这段代码在 SQL Server 2008 中无法工作:

ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'

出现错误:

关键字'SET'附近的语法不正确。

我做错了什么?


1
你读MSDN ALTER TABLE的内容了吗?http://msdn.microsoft.com/zh-cn/library/ms187742(SQL.90).aspx - gbn
2
可能是重复的问题:T-SQL命令添加默认约束 - user565869
可能是重复的问题:如何在SQL Server中向现有表添加一个具有默认值的列。链接 - Trilarion
1
那是MySQL语法。 - Benjamin Goodacre
1
为什么不是每个人都遵循一个标准呢?(这不是一个真正的问题,每个人都指微软和MySQL或其他供应商)。是否有一种ANSI / ISO标准的方法来做到这一点? - joedotnot
14个回答

5

我发现了三个简单的步骤来修改之前为null的已存在列

update   orders
set BasicHours=0 where BasicHours is null

alter table orders 
add default(0) for BasicHours

alter table orders 
alter  column CleanBasicHours decimal(7,2) not null 

正确。ADD DEFAULT 语法允许您添加默认值,而无需建立显式约束(这在我的情况下很重要)。 - Mike Keskinov

2
ALTER TABLE tblUser
 ADD CONSTRAINT DF_User_CreatedON DEFAULT GETDATE() FOR CreatedOn

1
这是十年前在被接受的答案中已经提出的相同语法,但奇怪的是,它选择不使用原始问题中作者明确建立的标识符或数据类型,因此使其不太相关。 - Jeremy Caney

2

尝试执行以下命令:

ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address

1

像Yuck的答案一样,使用检查来允许脚本在不出错的情况下运行多次。(比使用information_schema.columns更少的代码/自定义字符串)

IF object_id('DF_SomeName', 'D') IS NULL BEGIN
    Print 'Creating Constraint DF_SomeName'
   ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
END

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接