更改SQL Server中的列

时间:2012-11-08 17:31:27

标签: sql sql-server-2008

ALTER语句向现有列添加默认值的正确语法是什么?

我可以添加没有错误的新列:

ALTER TABLE tb_TableName ADD Record_Status varchar(20)

但是如果我尝试使用以下语句更改现有列以应用默认值:

ALTER TABLE tb_TableName 
ALTER COLUMN Record_Status VARCHAR(20) NOT NULL DEFAULT ''

ALTER TABLE tb_TableName 
ALTER Record_Status VARCHAR(20) NOT NULL DEFAULT ''

我收到错误:

  

'Record_Status'附近的语法不正确。

3 个答案:

答案 0 :(得分:37)

我想你想要这种语法:

ALTER TABLE tb_TableName  
add constraint cnt_Record_Status Default '' for Record_Status

根据您的一些评论,我猜您的表中可能已经有null个值,这导致列not null的更改失败。如果是这种情况,那么您应首先运行UPDATE。你的脚本将是:

update tb_TableName
set Record_Status  = ''
where Record_Status is null

ALTER TABLE tb_TableName
ALTER COLUMN Record_Status VARCHAR(20) NOT NULL

ALTER TABLE tb_TableName
ADD CONSTRAINT DEF_Name DEFAULT '' FOR Record_Status

请参阅SQL Fiddle with demo

答案 1 :(得分:5)

试试这个。

ALTER TABLE tb_TableName
ALTER COLUMN Record_Status VARCHAR(20) NOT NULL

ALTER TABLE tb_TableName
ADD CONSTRAINT DEF_Name DEFAULT '' FOR Record_Status

答案 2 :(得分:0)

要为列设置默认值,请尝试以下操作:

ALTER TABLE tb_TableName
ALTER COLUMN Record_Status SET DEFAULT 'default value'