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 ''

我收到一个错误:

“Record_Status”附近的语法不正确。

4

3 回答 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

于 2012-11-08T17:35:08.150 回答
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
于 2012-11-08T17:48:49.713 回答
0

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

ALTER TABLE tb_TableName
ALTER COLUMN Record_Status SET DEFAULT 'default value'
于 2014-03-07T09:26:19.033 回答