更改SQL Server中的列

Gen*_*Ziy 29 sql sql-server-2008

ALTER语句添加到现有列的语句的正确语法是什么?

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

ALTER TABLE tb_TableName ADD Record_Status varchar(20)
Run Code Online (Sandbox Code Playgroud)

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

ALTER TABLE tb_TableName 
ALTER COLUMN Record_Status VARCHAR(20) NOT NULL DEFAULT ''
Run Code Online (Sandbox Code Playgroud)

要么

ALTER TABLE tb_TableName 
ALTER Record_Status VARCHAR(20) NOT NULL DEFAULT ''
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

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

Tar*_*ryn 38

我想你想要这个语法:

ALTER TABLE tb_TableName  
add constraint cnt_Record_Status Default '' for Record_Status
Run Code Online (Sandbox Code Playgroud)

根据您的一些评论,我猜您可能已经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
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with demo


小智 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
Run Code Online (Sandbox Code Playgroud)