在SQL Server中修改列

29

如何使用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 ''

我遇到了一个错误:

“Incorrect syntax near 'Record_Status'.”

3个回答

39

我认为你想要这个语法:

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


6
试试这个。
ALTER TABLE tb_TableName
ALTER COLUMN Record_Status VARCHAR(20) NOT NULL

ALTER TABLE tb_TableName
ADD CONSTRAINT DEF_Name DEFAULT '' FOR Record_Status

谢谢。这会起作用。但是在添加语句中没有 NOT NULL,我必须添加它。 - GenZiy
哦,我以为你也想把你的列改成 Not Null。 - Prakash
是的,我知道,但是“ALTER TABLE tb_TableName ALTER COLUMN Record_Status VARCHAR(20) NOT NULL”不起作用。 - GenZiy

0

为列设置默认值,可以尝试以下方法:

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

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